我想在线程结束时更改布局,但我不明白这个bug;例如:
RES /布局:
-mainView.xml
-threadView.xml
MainActivity.java
protected void firstThread() {
setContentView(R.layout.threadView);
firstThread = new Thread(new Runnable() {
@Override
public void run() {
SystemClock.sleep(7000);
setContentView(R.layout.threadView);
}
});
firstThread.start();
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
firstThread();
}
谢谢大家!!
答案 0 :(得分:3)
您无法从任何其他线程修改UI线程。您可以从其他线程发布消息,并在UI线程中编写处理程序以更改布局。尝试使用Asynctask。你的生活会更简单。
答案 1 :(得分:0)
至少你应该为每个人发布错误堆栈以查看你的问题。假设存在问题,我想这是因为你无法在另一个线程中修改UI。在你的线程中尝试:
runOnUiThread(new Runnable() {
@Override
public void run() {
setContentView(R.layout.threadView);
}
});
答案 2 :(得分:0)
谢谢大家!
我使用下一个决议解决了这个问题:
我试图改变线程内的布局,而不是通过处理程序!