Android TextView 文本更改后应用程序停止
Android App stops after TextView text is changed
我制作了一个 android 应用程序,它有两个 TextView。当我使用 setText()
更改文本时,应用程序停止。
我已经在 Whosebug 上阅读了其他答案并在我的程序中实现了它们,但问题仍然存在。
这是我的 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 秒后停止。
Whosebug 上的其他答案说我应该在启动 ec
和 vc
变量之前放置 setContentView(R.layout.activity_main);
。它已经存在,但应用程序仍然停止。
请帮帮我。
UI 元素只能从 UI(主)线程更改,因此它会崩溃。尝试使用:
activity.runOnUiThread(new Runnable() {
public void run() {
//Do something on UiThread
}
});
但是您会让 UI 线程休眠,这意味着它无论如何都会冻结。所以,不好的做法。
试试看
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();
}
您可以使用View.postDelayed方法在一定时间后运行在UIThread上Runnable
。
我制作了一个 android 应用程序,它有两个 TextView。当我使用 setText()
更改文本时,应用程序停止。
我已经在 Whosebug 上阅读了其他答案并在我的程序中实现了它们,但问题仍然存在。
这是我的 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 秒后停止。
Whosebug 上的其他答案说我应该在启动 ec
和 vc
变量之前放置 setContentView(R.layout.activity_main);
。它已经存在,但应用程序仍然停止。
请帮帮我。
UI 元素只能从 UI(主)线程更改,因此它会崩溃。尝试使用:
activity.runOnUiThread(new Runnable() {
public void run() {
//Do something on UiThread
}
});
但是您会让 UI 线程休眠,这意味着它无论如何都会冻结。所以,不好的做法。
试试看
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();
}
您可以使用View.postDelayed方法在一定时间后运行在UIThread上Runnable
。