1

我想在线程结束时更改布局,但我不明白这个错误;例如:

资源/布局:

-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();
}

谢谢大家!!

4

3 回答 3

3

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

于 2013-08-07T04:30:39.337 回答
0

至少你应该发布错误堆栈让每个人都能看到你的问题。假设有问题,我猜是因为你不能在另一个线程中修改 UI。试试你的线程:

        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                setContentView(R.layout.threadView); 
            }
        });
于 2013-08-07T04:19:04.660 回答
0

谢谢大家!

我使用下一个解决方案解决了问题:

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

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

于 2013-08-07T13:57:28.547 回答