2010-04-15 64 views

回答

2

你可以試試...

runOnUiThread(new Runnable(){ 

    public void run() { 
    setContentView(R.layout.main_layout); 

    }}); 

..但要小心,因爲該公約是做setContentView(..);onCreate()上的默認線程那裏。

+0

謝謝,它的工作原理。但我的目標是通過使用線程顯示對話框並在後臺加載佈局。我也提出了一個新的問題 – Maneesh 2010-04-15 12:46:09

3

這是因爲setContentView無法從非UI線程調用。

0

應該在屏幕上顯示的內容只能在UI線程中調用。其他線程無法訪問UI元素。如果你想一旦你的後臺線程完成在屏幕上顯示的東西,或從後臺通知的東西線程可以使用處理器:

new Thread(new Runnable(){ 
public void run(){ 
//to do task in thread 
Message msg=new Message(); 
msg.what=10;//specify some message content to check from which thread u r receiving the //message 
handler.sendMessage(msg); 
} 
}).start(); 

,並在處理程序:

Handler handler=new Handler(){ 
void handleMessage(Message msg){ 
if(msg.what==10){ 
//carry out any UI associaed task that you want 
} 
} 
}; 

這種方法將確保在任何應該在後臺運行的線程不會干擾UI線程,UI不會變慢,並且可以通過此方法更新UI /顯示對話框。

runInUIThread()方法會將線程置於UI中,並且如果您的線程正在下載網絡數據或從磁盤寫入/讀取數據,UI可能會變慢。

希望這會有所幫助。

相關問題