plain - gettext android studio
TextView Text Not Updating (3)
Bueno, el principal problema es que no estás agregando que estás sobrescribiendo . En lugar de
((TextView) findViewById(R.id.TextView01)).setText("Hello:"+i);
hacer
TextView tv = ((TextView) findViewById(R.id.TextView01));
String text = tv.getText().toString();
tv.setText(text + " Hello:" + i);
package com.aviyehuda.test.multithreading;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MultithreadingTest extends Activity {
Button btn;
private Handler myHandler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.Button01);
}
public void buttonClicked(View v) {
myHandler = new Handler();
MyThread mThread = new MyThread();
mThread.start();
}
class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 30; i++) {
myHandler.post(new NewThreaad(i));
}
}
}
class NewThreaad implements Runnable{
int i;
public NewThreaad(int n) {
i=n;
}
@Override
public void run() {
((TextView) findViewById(R.id.TextView01)).setText("Hello:"+i);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Tengo el código mencionado anteriormente pero obtengo el resultado Hello29 en TextView pero quiero Hello1, Hello2, hello3 ................. Hola29 uno por uno automáticamente
Por favor dame una pista de lo que estoy haciendo mal
Debe mover la demora de 500 ms a su bucle for, entre la publicación de mensajes. Creo que esperas que los mensajes se ejecuten secuencialmente uno después del otro, pero no es así, por lo que simplemente ves el resultado del último.
Un par de cosas.
Primero, después de cambiar el texto, debe llamar a invalidate en TextView para forzar una actualización.
En segundo lugar, para hacer una operación en la interfaz de usuario, debe ejecutar eso en el hilo de la interfaz de usuario. Use runOnUiThread