Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.98
bers25
1 / 1 / 0
Регистрация: 04.04.2012
Сообщений: 18
#1

Timer и TimerTask - Программирование Android

16.07.2012, 16:35. Просмотров 6261. Ответов 5
Метки нет (Все метки)

Пишу программу для андроида в eclipse. Столкнулся с такой проблемой: нужно чтобы после нажатия на картинку она через секунду сменилась на другую. Вот код:

Java
1
2
3
4
5
6
7
8
9
10
11
12
public class MyTask extends TimerTask {
        public void run() {
           ImageView butMenu =(ImageView)findViewById(R.id.imageView3);
            butMenu.setImageResource(R.drawable.menu1);         
        }
    }
    
    public void menuClick(View v) throws Throwable  {
            Timer     timer = new Timer();
        TimerTask task = new MyTask();
        timer.schedule( task, 1000);
        }
Нажимаю на кнопку, проходит секунда, и программа закрывается и выбивает ошибка: "Unfortunately app has stopped". Помогите решить проблему, пожалуйста.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2012, 16:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Timer и TimerTask (Программирование Android):

Запись видео TimerTask() - Программирование Android
Нужно записывать видео при нажатии на кнопку(видео определенной длительности например 10 мин) и создавалось несколько видео файлов пока не...

Timer - Программирование Android
Я пишу приложение.Сначала для красоты показывается прогресс бар.Потом через 3сек меняется сообщение.но меняется только без таймера.а с...

Timer в ListView - Программирование Android
Добрый вечер! Поставлена задача: нужно создать ListView в элементах которого тикало время от даты создания объекта. Я пошел по самому...

Handler timer - Программирование Android
Добрый вечер. С помощью какого метода в Handler http://developer.android.com/reference/android/os/Handler.html(беда пока с английским) ,...

Timer \ Intent - Программирование Android
Доброй ночи. При запуске StartActivity через 3 сек должно открыться MainActivity, оно то работает , но только один раз при перезапуске...

Timer и AppWidgetProvider - Программирование Android
С Новым Годом, господа! Успехов всем в Новом Году! А мой вопрос такой: как остановить таймер в виджете... код в архиве...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
16.07.2012, 17:27 #2
На сколько я знаю, из таймера нельзя менять интерфейс. Реши вопрос с помощью Handler. Только вчера тему по похожему поводу создавал
Таймер и изменение элементов интерфейса
0
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.07.2012, 17:30 #3
логи не забывайте выкладывать.
0
bers25
1 / 1 / 0
Регистрация: 04.04.2012
Сообщений: 18
16.07.2012, 18:00  [ТС] #4
07-16 14:58:46.268: D/dalvikvm(615): GC_FOR_ALLOC freed 70K, 4% free 6056K/6275K, paused 52ms, total 57ms
07-16 14:58:46.278: I/dalvikvm-heap(615): Grow heap (frag case) to 6.546MB for 614416-byte allocation
07-16 14:58:46.368: D/dalvikvm(615): GC_CONCURRENT freed 1K, 4% free 6655K/6919K, paused 30ms+15ms, total 89ms
07-16 14:58:46.798: I/Choreographer(615): Skipped 131 frames! The application may be doing too much work on its main thread.
07-16 14:58:46.968: D/gralloc_goldfish(615): Emulator without GPU emulation detected.
07-16 14:58:51.501: W/dalvikvm(615): threadid=11: thread exiting with uncaught exception (group=0x40a13300)
07-16 14:58:51.528: E/AndroidRuntime(615): FATAL EXCEPTION: Timer-0
07-16 14:58:51.528: E/AndroidRuntime(615): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4607)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:867)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4066)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.View.invalidate(View.java:10250)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.View.setFlags(View.java:8366)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.view.View.setVisibility(View.java:5512)
07-16 14:58:51.528: E/AndroidRuntime(615): at android.widget.ImageView.setVisibility(ImageView.java:1155)
07-16 14:58:51.528: E/AndroidRuntime(615): at com.example.angry.octopus.MainActivity$MyTask.run(MainActivity.java:48)
07-16 14:58:51.528: E/AndroidRuntime(615): at java.util.Timer$TimerImpl.run(Timer.java:284)
07-16 14:58:53.238: I/Choreographer(615): Skipped 44 frames! The application may be doing too much work on its main thread.
07-16 14:58:53.918: I/Process(615): Sending signal. PID: 615 SIG: 9
07-16 15:02:15.008: E/Trace(667): error opening trace file: No such file or directory (2)
07-16 15:02:15.218: D/dalvikvm(667): GC_FOR_ALLOC freed 74K, 4% free 6056K/6275K, paused 43ms, total 45ms
07-16 15:02:15.228: I/dalvikvm-heap(667): Grow heap (frag case) to 6.546MB for 614416-byte allocation
07-16 15:02:15.368: D/dalvikvm(667): GC_CONCURRENT freed 1K, 4% free 6655K/6919K, paused 75ms+15ms, total 138ms
07-16 15:02:15.838: I/Choreographer(667): Skipped 169 frames! The application may be doing too much work on its main thread.
07-16 15:02:15.947: D/gralloc_goldfish(667): Emulator without GPU emulation detected.
07-16 15:02:18.538: W/dalvikvm(667): threadid=11: thread exiting with uncaught exception (group=0x40a13300)
07-16 15:02:18.547: E/AndroidRuntime(667): FATAL EXCEPTION: Timer-0
07-16 15:02:18.547: E/AndroidRuntime(667): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4607)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:835)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.View.requestLayout(View.java:15129)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.View.requestLayout(View.java:15129)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.View.requestLayout(View.java:15129)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.View.requestLayout(View.java:15129)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.widget.RelativeLayout.requestLayout(RelativeLayout.java:292)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.view.View.requestLayout(View.java:15129)
07-16 15:02:18.547: E/AndroidRuntime(667): at android.widget.ImageView.setImageResource(ImageView.java:355)
07-16 15:02:18.547: E/AndroidRuntime(667): at com.example.angry.octopus.MainActivity$MyTask.run(MainActivity.java:46)
07-16 15:02:18.547: E/AndroidRuntime(667): at java.util.Timer$TimerImpl.run(Timer.java:284)
07-16 15:02:20.397: I/Choreographer(667): Skipped 129 frames! The application may be doing too much work on its main thread.
07-16 15:02:21.458: I/Process(667): Sending signal. PID: 667 SIG: 9
0
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.07.2012, 19:20 #5
Only the original thread that created a view hierarchy can touch its views.
Только с UI-ного потока можно менять UI.
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
17.07.2012, 11:34 #6
Вариантов уйма:
View.postDelayed
Handler
Activity.runOnUiThread
HandlerThread + Handler
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2012, 11:34
Привет! Вот еще темы с ответами:

CheckBox и Timer - Программирование Android
Здравствуйте. Я только недавно начала изучать программирование. Помогите пожалуйста. Есть CheckBox1 и CheckBox2. Есть editText1 в...

Обращение к UI из Timer - Программирование Android
при помощи какой функции из таймера можно обратиться к элементу UI??

timer или postdelayed - Программирование Android
Мне во время работы приложения в фоновом, да и не только, нужно раз в секунду узнать сколько время. hh =...

Timer для чайника - Программирование Android
Второй день издтваюсь над андроид студио. Проблем с хелловордои небыло, а воь с тпймером застопорил. Подскажите как это проще реализовать....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.07.2012, 11:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru