Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Алекс_РК
0 / 0 / 0
Регистрация: 09.12.2016
Сообщений: 4
1

Как вывести текст?

02.01.2017, 23:38. Просмотров 395. Ответов 2
Метки нет (Все метки)

Привет, всем. Прошу извинить за реально глупый вопрос...

Есть Button и TextView. Хочу сделать таймер по нажатию кнопки. Но суть не в этом..
Пробую получить вид счетчика на самой кнопке или в TextView. И понимаю, что делаю неправильно, и примеров пересмотрел кучу. Ну не получается у меня. Ниже пример выводит только конечное значение, но в цикле молчит. Если сможете уделить мне немного время и обьяснить с комментариями, как правильно вывести текст во время цикла, то буду очень признателен.

зы. Сам не могу разобраться, и подсказать больше некому.
Да, и С Новым годом!

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    TextView textView;
    Button btnClick;
 
    int sec = 0;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.timer_layout);
 
        textView = (TextView) findViewById(R.id.textView);
        btnClick = (Button) findViewById(R.id.btnClick);
        
        btnClick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
 
                onBtnClick();
            }
        });
 
        textView.setText("Время 0 сек.");
        
    }
 
 
 
    private void run() {
        System.out.println("TimerTask начал свое выполнение в:" + new Date());    // Для просмотра Лога
 
        for (int i = 0; i < 10; i++){
            sec = sec + 1;
            System.out.println("Начали свое выполнение: " + sec);   // Для просмотра Лога
 
            textView.setText("Время " + sec + "сек.");   // Пробую вывести текст (здесь)
 
                try {
                    Thread.sleep(1000);
                    System.out.println("Прошло значение - " + sec);    // Для просмотра Лога
 
                    btnClick.setText("... " + sec + "сек.");   // Пробую вывести текст (или здесь)
 
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
 
        }
 
        System.out.println("TimerTask закончил свое выполнение в:" + new Date());   // Для просмотра Лога
 
    }
 
    private void onBtnClick() {
           sec = 0;
            run();
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2017, 23:38
Ответы с готовыми решениями:

Как вывести текст айтема в ListView?
Добрый вечер ув. Программисты! как вывести текст итема в листвью. ...

Как вывести в ListView, только если тело SMS содержит определенный текст?
нужно чтобы в ListView выводились только тела тех сообщений в которых есть...

В ListView не получается нормально вывести текст
При выводе текста в ListView получается непонятный текст,а не русский язык ...

Вывести в верхнее меню картинку или текст
я совсем нью в программировании для смартфонов, задача есть. Но затрудняюсь...

Как получить текст из ID
У каждого виджета на активити есть свой уникальный id. При добавлении виджета...

2
Hank
64 / 55 / 5
Регистрация: 28.12.2011
Сообщений: 306
03.01.2017, 03:30 2
Так ты ж цикл запускаешь в главном потоке. При таком подходе он и не должен динамически обновлять значение в textview.
Специально не буду писать тут правильную реализацию таймера. Думаю ты сам можешь это осилить. Почитай про фоновые потоки - таймер это первый пример в уроках на эту тему. Будь внимателен когда будешь обновлять данные в textview из фонового потока.
1
Алекс_РК
0 / 0 / 0
Регистрация: 09.12.2016
Сообщений: 4
03.01.2017, 22:54  [ТС] 3
Спасибо, буду разбираться..

Добавлено через 13 часов 39 минут
Устал курить темы, так и не понял как правильно использовать потоки...

Результат получил. И если кому будет интересно, то import android.os.Handler нужно вбивать вручную (не нашел как правильно использовать).


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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    final String LOG_TAG = "myLogs";
    Handler h;
 
    TextView textView;
    Button btnClick;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.timer_layout);
 
        textView = (TextView) findViewById(R.id.textView);
        btnClick = (Button) findViewById(R.id.btnClick);
        
        textView.setText("Время 0 сек."); // Можно задать в .xml
 
        h = new Handler() {
            public void handleMessage(android.os.Message msg) {
                // обновляем текст на кнопке
                btnClick.setText("... " + msg.what + "сек.");
 
                if (msg.what == 10){
                    btnClick.setEnabled(true);
                    textView.setText("Прошло " + msg.what + "сек."); 
                    btnClick.setText("Начать");      //  Вернули название кнопке
                }
            }
        };
    }
 
    public void onСlick(View v) {
        switch (v.getId()) {
            case R.id.btnClick:
                btnClick.setEnabled(false);
                Thread t = new Thread(new Runnable() {
                    public void run() {
 
                        for (int i = 1; i <= 10; i++) {
                            h.sendEmptyMessage(i);
                            try {
                                Thread.sleep(1000);
 
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
 
                            Log.d(LOG_TAG, "Строка = " + i);
                        }
                    }
                });
                t.start();
                break;
            default:
                break;
        }
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2017, 22:54

Получать текст входящих sms-сообщений от определённого номера и использовать этот текст в своей программе
Здравствуйте Уважаемые Форумчане, Столкнулся с такой задачкой, нужно...

Как у TextView задать текст?
как у TextView задать текст? я так понимаю методом setText? (кстати а что в...

Как в файл добавлять текст
Здравствуйте у меня проблема , как в файл допустим который находиться в папке...


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

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

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