我制作了一款Android应用,它有两个 TextView 。当我使用setText()
更改文本时,应用程序停止。
我已经在 StackOverflow 上阅读了其他答案,并在我的程序中实现了它们,但问题仍然存在。
这是我的onCreate()
代码:
TextView ec, vc;
Thread t;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ec = (TextView) findViewById(R.id.ce);
vc = (TextView) findViewById(R.id.cv);
t = new Thread(new Runnable() {@Override public void run() {loop();}});
t.start();
}
这是我的loop()
代码:
public void loop()
{
try{Thread.sleep(7000);}catch(Exception e){}
ec.setText("");
vc.setText("");
try{Thread.sleep(53000);}catch(Exception e){}
t.stop();
}
我想在7秒后清空TextView
的文本。
但是当我运行我的应用程序时,在7秒后,它会停止。
StackOverflow 上的其他答案说我应该在发起setContentView(R.layout.activity_main);
和ec
变量之前添加vc
。它已经存在,但应用仍停止。
请帮帮我。
答案 0 :(得分:1)
您可以使用View.postDelayed方法在一段时间后在UIThread上运行Runnable
。
答案 1 :(得分:0)
UI元素只能从UI(主)线程更改,因此它会崩溃。尝试使用:
activity.runOnUiThread(new Runnable() {
public void run() {
//Do something on UiThread
}
});
但是你会让UI线程睡眠,这意味着它会以任何方式冻结。所以,不好的做法。
答案 2 :(得分:0)
试试
public void loop()
{
try{Thread.sleep(7000);}catch(Exception e){}
activity.runOnUiThread(new Runnable() {
public void run() {
ec.setText("");
vc.setText("");
}
});
try{Thread.sleep(53000);}catch(Exception e){}
t.stop();
}