线程完成后更改布局

时间:2013-08-07 04:15:18

标签: java android android-layout layout view

我想在线程结束时更改布局,但我不明白这个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();
}

谢谢大家!!

3 个答案:

答案 0 :(得分:3)

您无法从任何其他线程修改UI线程。您可以从其他线程发布消息,并在UI线程中编写处理程序以更改布局。尝试使用Asynctask。你的生活会更简单。

答案 1 :(得分:0)

至少你应该为每个人发布错误堆栈以查看你的问题。假设存在问题,我想这是因为你无法在另一个线程中修改UI。在你的线程中尝试:

        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                setContentView(R.layout.threadView); 
            }
        });

答案 2 :(得分:0)

谢谢大家!

我使用下一个决议解决了这个问题:

http://inphamousdevelopment.wordpress.com/2010/10/11/using-a-viewswitcher-in-your-android-xml-layouts/

我试图改变线程内的布局,而不是通过处理程序!