Su método onCreate()
tiene varios defectos enormes:
1) onCreate
prepara su actividad - así que nada que haga aquí se harán visibles al usuario hasta que este método acabados! Por ejemplo, nunca podrá modificar el texto de TextView
más de ONE vez, ya que solo se dibujará el último cambio y, por lo tanto, será visible para el usuario.
2) Tenga en cuenta que un programa de Android ejecutará, de forma predeterminada, en ONE ¡Sólo subproceso! Por lo tanto: nunca use Thread.sleep()
o Thread.wait()
en su hilo principal que es responsable de su UI. (lea "Keep your App Responsive" para más información!)
Lo que su inicialización de su actividad no es:
- por ninguna razón se crea un nuevo objeto
TextView
t
!
- escoge el diseño
TextView
en la variable t
posterior.
- se establece el texto de
t
(pero tenga en cuenta: que sólo se mostrará despuésonCreate()
acabados y el bucle principal evento de tus ejecuta la aplicación!)
- espera 10 segundos dentro de su método de
onCreate
- este nunca se debe hacer ya que se detiene toda la actividad de la interfaz de usuario y sin duda forzar una ANR
- continuación, establece otro texto (aplicación no responde, ver enlace arriba!) - éste se mostrará tan pronto como su método de
onCreate()
acabados y varios otros métodos Activity lifecycle han sido ¡procesado!
La solución:
Conjunto de texto sólo una vez en onCreate()
- esto debe ser el primer texto que debe ser visible.
Crear una Runnable
y una Handler
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 ejecutable como un manipulador, posible en onCreate()
(pero leer mi consejo a continuación):
// run the mUpdateUITimerTask's run() method in 10 seconds from now
mHandler.postDelayed(mUpdateUITimerTask, 10 * 1000);
consejo: ¡seguro que conoce el ciclo de vida de Activity
! Si hace cosas así en onCreate()
, esto solo ocurrirá cuando se cree Activity
, el primer tiempo! Android posiblemente mantendrá su Activity
con vida durante un período de tiempo más largo, ¡incluso si no está visible! Cuando un usuario "comienza" de nuevo, y todavía existe, ¡ya no verá su primer texto!
=> Siempre instale los controladores en onResume()
y desactivarlos en onPause()
! De lo contrario, recibirá "actualizaciones" cuando su Activity
no esté visible en absoluto. En su caso, si desea volver a ver su primer texto cuando se lo vuelve a activar, debe configurarlo en onResume()
, no en onCreate()
.
La razón por la que solo muestra la segunda línea es porque '.setText()' reemplaza todo el "widget" con el texto que le indica que establezca; INCLUYE texto que ya has puesto ahí. – georgiaboy82