Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/50: Рейтинг темы: голосов - 50, средняя оценка - 4.64
Bolilbik
0 / 0 / 0
Регистрация: 07.07.2011
Сообщений: 8
#1

Не получается создать таймер

29.05.2012, 09:10. Просмотров 9077. Ответов 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>
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2012, 09:10
Ответы с готовыми решениями:

Не получается создать два AsyncTask
Всем привет. Вот так я создаю первый Task: public class MyTimerTask extends...

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

Не получается запустить таймер
никак не пойму почему не запускается таймер. создал форму, закинул на нее...

Не получается запустить таймер
Компилятор Keil, плата stm32vl-discovery. На пинах PB13 &amp; PB14 ничего нет....

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

13
silentnuke
Android Programmer
139 / 140 / 10
Регистрация: 08.12.2010
Сообщений: 421
29.05.2012, 14:02 #2
все банально просто, вы изменяете UI не из UI потока.
0
Bolilbik
0 / 0 / 0
Регистрация: 07.07.2011
Сообщений: 8
29.05.2012, 14:10  [ТС] #3
Подскажите как правильнее сделать, потому что я только начинающий, пытаюсь немного освоить андроид программирование
0
silentnuke
Android Programmer
139 / 140 / 10
Регистрация: 08.12.2010
Сообщений: 421
29.05.2012, 14:22 #4
вы объяснить суть того что хотите сделать)
1
Bolilbik
0 / 0 / 0
Регистрация: 07.07.2011
Сообщений: 8
29.05.2012, 16:35  [ТС] #5
Я хочу, что бы, при нажатии на кнопочку, в TextView, со скоростью в 0,1 сек, начался отсчет.
т.е. это самое простое что можно сделать с таймером, а дальше, если получится, будет полет фантазии )
0
silentnuke
Android Programmer
139 / 140 / 10
Регистрация: 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);
            }
        });
5
Bolilbik
0 / 0 / 0
Регистрация: 07.07.2011
Сообщений: 8
01.06.2012, 14:59  [ТС] #7
Спасибо получилось
0
Klafe
1 / 1 / 1
Регистрация: 13.10.2012
Сообщений: 101
05.01.2013, 09:30 #8
Цитата Сообщение от silentnuke Посмотреть сообщение
все банально просто, вы изменяете UI не из UI потока.
Это получается что таймер создает свой поток? Или просто UI можно изменять только из класса где он определяется?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.01.2013, 22:02 #9
первое.
0
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
29.08.2013, 17:02 #10
Извините за некропостинг)

А если вместо строки tx.setText(Integer.toString(i++)); я хочу вызвать процедуру и в ней обновить TextView, как это реализовать?
Просто в лоб вызов не получается, приложение "падает"
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
29.08.2013, 22:59 #11
Цитата Сообщение от sirik2012 Посмотреть сообщение
приложение "падает"
смотрите логи.
0
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)
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
30.08.2013, 20:07 #13
а теперь исправляйте)
0
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
30.08.2013, 22:40 #14
Не совсем понял что( Это не критично, я уже сделал в теле таймера; мне просто интересно как вынести в отдельную процедуру
0
30.08.2013, 22:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2013, 22:40

Не получается реализовать таймер для этого светофора
Не могу понять, как сделать в таймере два цикла: первый цикл - сначала должен...

Не получается стартовать таймер, который бы изменял значение content в label
Не получается стартовать таймер, который бы изменял значение content в label....

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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