Установите String в TextView, подождите некоторое время и установите для другой String тот же TextView - PullRequest
0 голосов
/ 30 мая 2020

Я хочу установить «Первое» слово в TextView (textTT) и подождать некоторое время, установленное на «Второе» для того же TextView, но результат напрямую устанавливается «вторым» для TextView, но мне нужно сначала установить «Первый». Как я могу это преодолеть? <>

private void applicationTest()  {
    textTT.setText("First");
    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    textTT.setText("Second");
}

Ответы [ 3 ]

2 голосов
/ 30 мая 2020

Если вы позвоните Thread.sleep(1000), это означает, что UI thread будет заблокирован, а пользовательский интерфейс не будет обновляться First. Если вы хотите подождать и установить Second, вы должны использовать Handler. Попробуйте это

private void applicationTest()  {
    textTT.setText("First");
    new Handler().postDelayed({
           textTT.setText("Second");
    }, 1000)
}
0 голосов
/ 30 мая 2020

Для этого следует использовать Handler:

private void applicationTest()  {
    textTT.setText("First");
    new Handler().postDelayed(new Runnable{
      @Override
      public void run() {
         textTT.setText("Second");
   } 
    },1000)
}
0 голосов
/ 30 мая 2020

Использование thred.sleep - очень плохая практика, поскольку вы замораживаете все приложение! Таким образом, вы в основном говорите: установите текст first, но ничего не делайте, а затем установите second. Итак, вы видите второе. Вместо этого вы должны использовать Handler. В этом случае вы говорите: set first, а затем создайте параллельную задачу, которая ожидает 1se c перед выполнением. После 1 se c он устанавливает second.

Это код для этого:

private void applicationTest()  {
    textTT.setText("First");
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
       @Override
       public void run() {
          textTT.setText("Second");
       } 
   }, 1000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...