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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 69, средняя оценка - 4.80
Bolilbik
0 / 0 / 0
Регистрация: 07.07.2011
Сообщений: 8
#1

Не получается создать таймер - Программирование Android

29.05.2012, 09:10. Просмотров 8757. Ответов 13
Метки нет (Все метки)

Решил создать таймер для андроида и столкнулся с некоторыми проблемами.
Приложение запускается но при активации таймера выдает ошибку.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.prim.sample;
 
import java.util.Timer;
import java.util.TimerTask;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
 
public class Prim1Activity extends Activity {
    private TextView tx;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        final Button bt=(Button)findViewById(R.id.but);
        tx=(TextView)findViewById(R.id.text);
        bt.setOnClickListener(new OnClickListener() {
        int i = 0;
            public void onClick(View arg0) {
                Timer timer = new Timer();
                timer.schedule(new TimerTask() {
                    
                    @Override
                    public void run() {                 
                        tx.setText(Integer.toString(i++));
                    }
                }, 0,100);                      
            }
        });
    }
}
и main.xml

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
 
    <TextView
        android:id="@+id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
    
    <Button android:id="@+id/but"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="fff"/>
 
</LinearLayout>
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2012, 09:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не получается создать таймер (Программирование Android):

Не получается создать два AsyncTask - Программирование Android
Всем привет. Вот так я создаю первый Task: public class MyTimerTask extends AsyncTask&lt;Void, Void, Void&gt; { private TextView...

LibGDX, не получается создать apk файл - Программирование Android
Не могу создать apk файл. С libgdx первый опыт. Ошибка на фото. Час уже бьюсь, интернеты говорят, что надо добавить строку...

Не получается запустить таймер - C#
никак не пойму почему не запускается таймер. создал форму, закинул на нее timer1, numericUpDown1 и кнопку. В свойствах таймера Enable...

Нужно сделать таймер но не получается - C++
Вообщем нужно выполнить команду (допустим Say(&quot;Hello world&quot;)) 3 раза с интервалом в 1 секунду. Я испробовал много способов, но не один не...

Не получается стартовать таймер, который бы изменял значение content в label - C# WPF
Не получается стартовать таймер, который бы изменял значение content в label. Без таймера - оно изменяется, с - нет. Пробовал и Threading и...

Создать таймер - C#
Создать таймер обратного отчёта?(Язык Си Шарп,консольное приложение)

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
29.05.2012, 14:02 #2
все банально просто, вы изменяете UI не из UI потока.
Bolilbik
0 / 0 / 0
Регистрация: 07.07.2011
Сообщений: 8
29.05.2012, 14:10  [ТС] #3
Подскажите как правильнее сделать, потому что я только начинающий, пытаюсь немного освоить андроид программирование
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
29.05.2012, 14:22 #4
вы объяснить суть того что хотите сделать)
Bolilbik
0 / 0 / 0
Регистрация: 07.07.2011
Сообщений: 8
29.05.2012, 16:35  [ТС] #5
Я хочу, что бы, при нажатии на кнопочку, в TextView, со скоростью в 0,1 сек, начался отсчет.
т.е. это самое простое что можно сделать с таймером, а дальше, если получится, будет полет фантазии )
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
29.05.2012, 18:09 #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ну если пойти самым простым путем, то написать аля, но не самый лучший вариант.)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bt.setOnClickListener(new OnClickListener() {
            int i = 0;
 
            public void onClick(View arg0) {
                Timer timer = new Timer();
                timer.schedule(new TimerTask() {
 
                    @Override
                    public void run() {
                        Prim1Activity.this.runOnUiThread(new Runnable() {
                            public void run() {
                                tx.setText(Integer.toString(i++));
                            }
                        });
                    }
                }, 0, 100);
            }
        });
Bolilbik
0 / 0 / 0
Регистрация: 07.07.2011
Сообщений: 8
01.06.2012, 14:59  [ТС] #7
Спасибо получилось
Klafe
1 / 1 / 0
Регистрация: 13.10.2012
Сообщений: 101
05.01.2013, 09:30 #8
Цитата Сообщение от silentnuke Посмотреть сообщение
все банально просто, вы изменяете UI не из UI потока.
Это получается что таймер создает свой поток? Или просто UI можно изменять только из класса где он определяется?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.01.2013, 22:02 #9
первое.
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
29.08.2013, 17:02 #10
Извините за некропостинг)

А если вместо строки tx.setText(Integer.toString(i++)); я хочу вызвать процедуру и в ней обновить TextView, как это реализовать?
Просто в лоб вызов не получается, приложение "падает"
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.08.2013, 22:59 #11
Цитата Сообщение от sirik2012 Посмотреть сообщение
приложение "падает"
смотрите логи.
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
30.08.2013, 09:14 #12
Вот логи:
Добавлено через 9 часов 0 минут
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
08-30 05:12:43.438: E/AndroidRuntime(700): FATAL EXCEPTION: main
08-30 05:12:43.438: E/AndroidRuntime(700): java.lang.NullPointerException
08-30 05:12:43.438: E/AndroidRuntime(700):  at com.example.tab.MainActivity.fff(MainActivity.java:93)
08-30 05:12:43.438: E/AndroidRuntime(700):  at com.example.tab.MainActivity$1$1.run(MainActivity.java:44)
08-30 05:12:43.438: E/AndroidRuntime(700):  at android.os.Handler.handleCallback(Handler.java:615)
08-30 05:12:43.438: E/AndroidRuntime(700):  at android.os.Handler.dispatchMessage(Handler.java:92)
08-30 05:12:43.438: E/AndroidRuntime(700):  at android.os.Looper.loop(Looper.java:137)
08-30 05:12:43.438: E/AndroidRuntime(700):  at android.app.ActivityThread.main(ActivityThread.java:4745)
08-30 05:12:43.438: E/AndroidRuntime(700):  at java.lang.reflect.Method.invokeNative(Native Method)
08-30 05:12:43.438: E/AndroidRuntime(700):  at java.lang.reflect.Method.invoke(Method.java:511)
08-30 05:12:43.438: E/AndroidRuntime(700):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-30 05:12:43.438: E/AndroidRuntime(700):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-30 05:12:43.438: E/AndroidRuntime(700):  at dalvik.system.NativeStart.main(Native Method)
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.08.2013, 20:07 #13
а теперь исправляйте)
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
30.08.2013, 22:40 #14
Не совсем понял что( Это не критично, я уже сделал в теле таймера; мне просто интересно как вынести в отдельную процедуру
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2013, 22:40
Привет! Вот еще темы с ответами:

Создать таймер... - Delphi
Привет всем Появилась необходимость в процедуре создать 2 таймера, но создать их не &quot;вытащить на форму&quot; 2 компонента таймер, а не знаю...

Создать многопоточный таймер - C++
Мне надо создать многопоточный таймер,говоря иначе,мне надо,чтобы запускался таймер,а ты мог еще что-то делать в это...

Создать таймер в потоке - C#
У меня есть событие, оно вызывается безусловно в конце очереди других событий. Проблема в том, что мне нужно чтобы событие вызывалось...

Создать таймер динамически - Visual Basic .NET
Как не добовляя на форму таймер из панели инструментов сделать таймер в коде. Вопрос простой, но не могу найти ответ уже часа 4. Нужно...


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

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

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