Seu onCreate()método tem várias falhas enormes:
1) onCreate prepara sua atividade - então nada do que você fizer aqui ficará visível para o usuário até que este método seja concluído! Por exemplo - você nunca poderá alterar TextViewo texto de um aqui mais de UMA vez, pois apenas a última alteração será desenhada e, portanto, visível para o usuário!
2) Tenha em mente que um programa Android irá - por padrão - rodar em apenas UM thread! Portanto: nunca use Thread.sleep()ou Thread.wait()em seu thread principal que é responsável por sua IU! (leia "Mantenha seu aplicativo responsivo" para obter mais informações!)
O que a inicialização de sua atividade faz é:
- sem motivo, você cria um novo
TextViewobjeto t!
- você escolhe seu layout
TextViewna variável tmais tarde.
- você define o texto de
t(mas lembre-se: ele será exibido apenas após o término onCreate() e o loop de evento principal do seu aplicativo for executado!)
- você espera por 10 segundos dentro do seu
onCreatemétodo - isso nunca deve ser feito , pois interrompe todas as atividades da IU e definitivamente forçará um ANR (Aplicativo não está respondendo, consulte o link acima)
- então você define outro texto - este será exibido assim que seu
onCreate()método terminar e vários outros métodos de ciclo de vida de atividade tiverem sido processados!
A solução:
Defina o texto apenas uma vez onCreate()- este deve ser o primeiro texto que deve estar visível.
Crie um Runnablee umHandler
private final Runnable mUpdateUITimerTask = new Runnable() {
public void run() {
// do whatever you want to change here, like:
t.setText("Second text to display!");
}
};
private final Handler mHandler = new Handler();
instale este executável como um gerenciador, possível em onCreate()(mas leia meu conselho abaixo):
// run the mUpdateUITimerTask's run() method in 10 seconds from now
mHandler.postDelayed(mUpdateUITimerTask, 10 * 1000);
Conselho: conheça bem Activityo ciclo de vida de! Se você fizer coisas assim, onCreate()isso só acontecerá quando o seu Activityfor criado pela primeira vez! O Android possivelmente o manterá Activityvivo por um longo período de tempo, mesmo que não esteja visível! Quando um usuário "inicia" novamente - e ele ainda existe - você não verá mais o seu primeiro texto!
=> Sempre instale manipuladores onResume()e desative-os onPause()! Caso contrário, você receberá "atualizações" quando Activitynão estiver visível de forma alguma! No seu caso, se quiser ver o primeiro texto novamente quando for reativado, você deve configurá-lo onResume(), não onCreate()!
.setText()substitui todo o "widget" pelo texto que você instruiu a definir; INCLUINDO texto que você já colocou lá.