Я делаю заявление викторины с вопросом и ответом. Я хочу сделать тактовую цифру (минута + вторая) и отображать ее на экране. Но я не могу это сделать. Может ли кто-нибудь мне помочь?Blackberry - Как сделать отсчет часов и отображать на экране
ответ
это одно решение для печати времени мм: сс (минуты: секунды)
public class StartUp extends UiApplication{
public static void main(String[] args) {
StartUp start=new StartUp();
start.enterEventDispatcher();
}
public StartUp() {
pushScreen(new Timerscreen());
}
}
class Timerscreen extends MainScreen
{
LabelField time;
long mille=0;
Timer timer=null;TimerTask task=null;
public Timerscreen() {
mille=1000*60*1;
time=new LabelField();
add(time);
timer=new Timer();
task=new TimerTask() {
public void run() {
synchronized (UiApplication.getEventLock()) {
if(mille!=0){
SimpleDateFormat date=new SimpleDateFormat("mm:ss") ;
System.out.println("================="+date.formatLocal(mille)+"====================="+Thread.activeCount());
time.setText(date.formatLocal(mille));
mille=mille-1000;
}else{
time.setText("00:00");
mille=1000*60*1;
timer.cancel();
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
Dialog.inform("Time expaired");
}
});
}
}
}
};
timer.schedule(task,0, 1000);
}
}
Я добавляю ваш код в свое приложение, но, похоже, у него есть некоторая ошибка. Вы можете проверить его еще раз? –
Я создаю новое приложение, в котором только один Myscreen расширяет MainScreen. и я добавляю ваш код в конструктор MyScreen, есть 4 ошибки . Нельзя ссылаться на не конечную переменную mille внутри внутреннего класса, определенного другим методом. (at if (mille! = 0) –
Да, это нормально. Спасибо большое –
Такие же, как и выше, но некоторые изменения:
Первый набор:
INT сек = 120; // сколько секунд вы хотите;
public void callTheTimer()
{
label=new LabelField("\t");
add(label);
timer=new Timer();
timerTask=new TimerTask()
{
public void run()
{
synchronized (UiApplication.getEventLock())
{
if(secs!=0)
{
label.setText(""+(secs--)+" secs");
}
else
{
timer.cancel();
UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run()
{
label.setText("");
Dialog.alert("Times Up");
secs=120;
}
});
}
}
}
};
timer.schedule(timerTask, 0, 1000);
}
Это достаточно;
Это нормально. Спасибо вам большое alshaik786 –
Я хочу отображать эти часы в любой момент в моем приложении, и он все еще работает, когда я нажимаю новый экран. могу я ? –
Перед тем, как нажать, вы должны проверить условие, что if (timer! = Null) timer.close(); – alishaik786
привет, пожалуйста, дайте дополнительную информацию, что вам нужно в точности? вы хотите посчитать время между вопросом и ответом? –
@HelpMeToHelpВы игра Викторины имеют ограничение по времени (от 2 минут). Я хочу создать счетчик часов на 2 минуты 0 с до 0 минута 0. Когда закончится время, викторина завершена. И покажите часы на моем экране викторины (пример изображения http://pastormikelandry.files.wordpress.com/2010/02/countdown-clock1.jpg) –
привет, если у вас есть сомнения, требующие этого, эта комната http: //chat.stackoverflow .com/rooms/4014/Knowledge-sharing-center-for-blackberry-and-java –