我一直在尝试在我的应用程序中实现Runnable
,所以我开始使用一些简单的过程,但即使这样也不会在TextView
上显示任何内容。令人惊讶的是,我已经覆盖了对象的run()
,但它仍然没有显示。
package com.example.filer;
public class Filesearcher extends Activity implements Runnable {
TextView tvtis;
Thread tr;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_filesearcher);
tvtis = (TextView) findViewById(R.id.tvfirst);
tr = new Thread();
tr.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(5000);
tvtis.setText("Started");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
更改
tr = new Thread();
到
tr = new Thread(this);
答案 1 :(得分:0)
您无法从UI线程以外的线程更改UI。意味着 - 您的线程可能正常工作,但tvis.setText()
没有(从该线程内)。尝试使用简单的Log.d("tag", "does it work?")
来查看您的线程是否运行。
答案 2 :(得分:0)
将Runnable放在一个帖子上:tr = new Thread(this);
从另一个切换到UI线程:
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
tvtis.setText("started");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
查看runOnUiThread(Runnable)