Traté de hacer esto
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
t=new TextView(this);
t=(TextView)findViewById(R.id.TextView01);
t.setText("Step One: blast egg");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
t.setText("Step Two: fry egg");
pero por alguna razón, solo aparece el segundo texto cuando lo ejecuto. Creo que podría tener algo que ver con el Thread.sleep()
método de bloqueo. Entonces, ¿alguien puede mostrarme cómo implementar un temporizador "asincrónicamente"?
Gracias.
.setText()
reemplaza todo el "widget" con el texto que le indica que configure; INCLUYENDO texto que ya ha puesto allí.Respuestas:
Acabo de publicar esta respuesta en el grupo de google de discusión de android
Si solo está tratando de agregar texto a la vista para que muestre "Paso uno: romper el huevo Paso dos: freír el huevo", considere usar en
t.appendText("Step Two: fry egg");
lugar det.setText("Step Two: fry egg");
Si desea cambiar completamente lo que está en el
TextView
para que diga "Paso uno: huevo explosivo" en el inicio y luego diga "Paso dos: huevo frito" en un momento posterior, siempre puede usar unEjemplo ejecutable que dio el chico triste
Buena suerte
fuente
Tu
onCreate()
método tiene varios defectos enormes:1)
onCreate
prepara su actividad, de modo que nada de lo que haga aquí será visible para el usuario hasta que finalice este método. Por ejemplo, nunca podrá modificarTextView
el texto de a aquí más de UNA 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 se ejecutará, de forma predeterminada, en UN solo hilo. Por lo tanto: ¡nunca use
Thread.sleep()
oThread.wait()
en su hilo principal que es responsable de su interfaz de usuario! (lea "Mantenga su aplicación receptiva" para obtener más información).Lo que hace la inicialización de su actividad es:
TextView
objetot
!TextView
en la variablet
más tarde.t
(pero tenga en cuenta: ¡se mostrará solo después de queonCreate()
finalice y se ejecute el ciclo de eventos principal de su aplicación!)onCreate
método; esto nunca debe hacerse ya que detiene toda la actividad de la interfaz de usuario y definitivamente forzará un ANR (la aplicación no responde, consulte el enlace de arriba).onCreate()
finalice su método y se hayan procesado varios otros métodos del ciclo de vida de la actividad .La solución:
Establecer texto solo una vez en
onCreate()
: este debe ser el primer texto que debe estar visible.Crea un
Runnable
y unHandler
instale este ejecutable como un controlador, posible en
onCreate()
(pero lea mis consejos a continuación):Consejo: ¡asegúrese de conocer
Activity
el ciclo de vida de un! Si haces cosas así, ¡onCreate()
esto solo sucederá cuandoActivity
se cree tu primera vez! Es posible que Android te mantengaActivity
vivo durante un período de tiempo más largo, ¡incluso si no es visible! Cuando un usuario lo "inicia" de nuevo, y todavía existe, ¡ya no verá su primer texto!=> ¡Instale siempre los controladores
onResume()
y desactívelosonPause()
! De lo contrario, obtendrá "actualizaciones" cuandoActivity
no esté visible en absoluto. En su caso, si desea volver a ver su primer texto cuando se reactive, debe configurarloonResume()
,onCreate()
¡ no !fuente
La primera línea de la nueva vista de texto no es necesaria
puedes hacer esto
en cuanto a un hilo de fondo que duerme aquí es un ejemplo, pero creo que hay un temporizador que sería mejor para esto. aquí hay un enlace a un buen ejemplo usando un temporizador en su lugar http://android-developers.blogspot.com/2007/11/stitch-in-time.html
fuente
@ usuario264892
Descubrí que cuando usaba una variable String necesitaba prefijar una String de "" o lanzarla explícitamente a CharSequence.
Entonces en lugar de:
tratar:
o:
o, dado que su cadena no es dinámica, aún mejor:
fuente
según su consejo, estoy usando handle y runnables para cambiar / cambiar el contenido de TextView usando un "temporizador". por alguna razón, cuando se ejecuta, la aplicación siempre omite el segundo paso ("Paso dos: freír huevo") y solo muestra el último (tercer) paso ("Paso tres: servir huevo").
fuente
:) Estás usando el hilo de forma incorrecta. Simplemente haz lo siguiente:
Eso es.
fuente
configurar el texto en sam textview dos veces es sobrescribir el primer texto escrito. Entonces, la segunda vez que usamos settext, simplemente agregamos la nueva cadena como
fuente
@Zordid @Iambda la respuesta es genial, pero encontré que si pongo
en el método run () y
en el método onCreate haz que la cosa siga actualizándose.
fuente