Я хочу использовать анимацию на кнопке, которую я создал в своем приложении BlackBerry. Анимация отлично работает в первый раз, когда я нажимаю кнопку. При первом нажатии кнопка запускает анимацию (мигает). При втором нажатии мигание останавливается. Однако, когда я снова нажимаю кнопку (третий раз), мигание должно начинаться снова. Тем не менее, я получаю сообщение об ошибке:Добавление анимации к кнопке в BlackBerry
App Error 104 Uncaught: IllegalStateException
код для создания кнопки и добавления анимации выглядит следующим образом:
final Bitmap image000 = Bitmap.getBitmapResource("panic.png");
final Bitmap image001 = Bitmap.getBitmapResource("panicon.png");
final Timer animationTimer = new Timer();
final BitmapField animationField = new BitmapField(image000,BitmapField.FOCUSABLE){
protected boolean navigationClick(int status, int time)
{
if(flag){
animationTask.cancel();
flag=false;
}else{
animationTimer.scheduleAtFixedRate(animationTask, 0, 100);
flag=true;
}
return true;
}
};
animationTask = new TimerTask() {
public void run() {
if(counter == 0){
animationField.setBitmap(image000);
}
if(counter == 1){
animationField.setBitmap(image001);
counter = -1;
}
counter++;
}
};
add(animationField);
EDIT: Я отлажена мой код, и ошибка происходит в цикле, что запускает поток. Отмена потока кажется прекрасной. Я потерял, в чем проблема. Пожалуйста, направляйте.
Вы пытаетесь обновить пользовательский интерфейс (animationField) из другого потока. Проверьте эти ответы, http://stackoverflow.com/a/8954864/431639, http://supportforums.blackberry.com/t5/Java-Development/illegalStateException-when-updating-the-labelField/m-p/835999#M147132. – Rupak
Спасибо за ссылки @Rupak, я пробовал предложения по ссылке, но это не исправляет проблему. Я отлаживал свой код, и ошибка возникает в цикле, который запускает поток. Отмена потока кажется прекрасной. Я потерял, в чем проблема. Пожалуйста, направляйте. – Sarah
Проверьте этот ответ, http://stackoverflow.com/a/1041692/431639. Я думаю, вам нужно создать новый экземпляр animationTask. – Rupak