I am tring to setText in another thread, that is, child thread. But for the following code, it is giving the error
Only the original thread that created a view hierarchy can touch its views.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
img = (ImageView)findViewById(R.id.img);
pb = (ProgressBar)findViewById(R.id.pb);
this.tv = (TextView)findViewById(R.id.perc);
tv.setText("30 %");
pb.setProgress(30);
pb.setMax(100);
}
public void set(int p)
{
tv.setText(p + " %");
}
protected void onStart()
{
super.onStart();
pb.setProgress(20);
Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
try {
int i = pb.getProgress();
while(i <100)
{
while(pb.getProgress()<100)
{
pb.incrementProgressBy(5);
Thread.sleep(1000);
}
i+=10;
pb.setProgress(i);
Thread.interrupted();
set(i);
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
});
t.start();
}
Set the TextView text programmaticallyInside the Activity class where you want to set the text, find the TextView using the findViewById() method. Then, use the setText() method to set the new text. Here's the code example in Java: TextView myTextView = findViewById(R.
Add Line Breaks to a TextView Just add a \n to your text. This can be done directly in your layout file, or in a string resource and will cleanly break the text in your TextView to the next line.
Service runs in the main thread of its hosting process; the service does not create its own thread and does not run in a separate process unless you specify otherwise.
You need a reference to that textview and then do:
textView.post(new Runnable() {
public void run() {
textView.setText(yourText);
}
});
in Kotlin:
val textView: TextView = findViewById(R.id.textView)
textView.post(Runnable { textView.setText(yourText) })
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