У вашего onCreate()метода есть несколько серьезных недостатков:
1) onCreate подготавливает вашу активность - так что ничего из того, что вы здесь делаете, не будет видно пользователю, пока этот метод не завершится! Например, вы никогда не сможете изменить TextViewтекст здесь более ОДНОГО раза, так как будет отображено только последнее изменение и, следовательно, будет видно пользователю!
2) Имейте в виду, что программа Android по умолчанию запускается только в ОДНОМ потоке! Таким образом: никогда не используйте Thread.sleep()или Thread.wait()в своем основном потоке, который отвечает за ваш пользовательский интерфейс! (прочтите «Поддерживайте адаптивность приложения» для получения дополнительной информации!)
Что делает ваша инициализация вашей Activity:
- без причины вы создаете новый
TextViewобъект t!
- Вы выбираете свой макет
TextViewв переменной tпозже.
- вы устанавливаете текст
t(но имейте в виду: он будет отображаться только после onCreate() завершения и запуска основного цикла событий вашего приложения!)
- вы ждете 10 секунд в своем
onCreateметоде - этого никогда нельзя делать, поскольку он останавливает все действия пользовательского интерфейса и обязательно вызовет ANR (приложение не отвечает, см. ссылку выше!)
- затем вы устанавливаете другой текст - он будет отображаться, как только ваш
onCreate()метод будет завершен и несколько других методов жизненного цикла Activity будут обработаны!
Решение:
Установить текст только один раз onCreate()- это должен быть первый текст, который должен быть виден.
Создать RunnableиHandler
private final Runnable mUpdateUITimerTask = new Runnable() {
public void run() {
t.setText("Second text to display!");
}
};
private final Handler mHandler = new Handler();
установить этот исполняемый файл в качестве обработчика, возможно onCreate()(но прочтите мой совет ниже):
mHandler.postDelayed(mUpdateUITimerTask, 10 * 1000);
Совет: убедитесь, что вы знаете Activityжизненный цикл! Если вы сделаете что-то подобное, onCreate()это произойдет только тогда, когда ваш Activityбудет создан в первый раз! Android, возможно, сохранит вашу Activityжизнь в течение более длительного периода времени, даже если его не видно! Когда пользователь "запускает" его снова - а он все еще существует - вы больше не увидите свой первый текст!
=> Всегда устанавливайте обработчики onResume()и отключайте их onPause()! В противном случае вы будете получать «обновления», когда вас Activityвообще не будет видно! В вашем случае, если вы хотите снова увидеть свой первый текст при его повторной активации, вы должны установить его onResume(), а не onCreate()!
.setText()заменяет весь «виджет» текстом, который вы ему указываете ; ВКЛЮЧАЯ текст, который вы там уже поместили.