I need to set text to textView from thread. All code is created in oncreate()
something like
public TextView pc;
oncreate(..) {
setContentView(R.layout.main);
pc = new TextView(context);
Thread t =new Thread() {
public void run() {
pc.setText("test");
}};
t.start();
This crashes my app. How can I set text from thread?
Use a Handler:
public TextView pc;
Handler handler = new Handler();
oncreate(..) {
setContentView(R.layout.main);
pc = new TextView(context);
Thread t =new Thread(){
public void run() {
handler.post(new Runnable() {
public void run() {
pc.setText("test");
}
});
}
}};
t.start();
}
But you have another problem. pc
points to a view that is not part of your hierarchy. You probably want to use findViewById
with the id of the TextView in your layout.
Try Activity.runOnUiThread()
.
Thread t = new Thread() {
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
pc.setText("test");
}
});
}
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With