2012-12-29 161 views
0

這感覺應該是一個非常簡單的任務,但我遇到了很多問題。在我的程序中,我已經爲自己的WebView類擴展了,並試圖以編程方式將它添加到佈局中。這是我的代碼:處理程序不執行運行

Looper.prepare(); 
Handler handler = new Handler(); 
handler.post(new Runnable() { 
public void run() { 
      MyWebView webView = new MyWebView(context,1,2,3,4); 
      appState.projectWebView.add(webView); 
      addView(webView); 
        } 
}); 

當我運行此代碼時,它不執行。我不知道爲什麼。謝謝你的時間。

+0

爲什麼你有'Looper.prepare()'那裏? –

+0

當我嘗試沒有它運行的程序我得到這個錯誤: 「12-29 00:10:3​​7.513:E/AndroidRuntime(16641):了java.lang.RuntimeException:無法內螺紋創建處理程序也沒有說所謂Looper.prepare()」 – Marche101

+0

我算了一下,你正試圖從錯誤的線程做到這一點,但沒有足夠的背景下您的代碼示例中給你任何其他建議 –

回答

4

您不能在UI線程之外創建Handler。那麼,你可以,但是你必須把這個線程變成一個消息隊列,而不僅僅是Looper.prepare()

您需要做的是將Activity傳遞給包含樣本代碼的類,並調用runOnUiThread()。另外,您也可以通過在UI線程創建Handler,例如在運行您的Activity UI線程創建它,然後在該處理程序調用post

注意,這是可怕的建議,你似乎想要做的事情對Android框架。但是,沒有進一步的信息,你真的試圖做,沒有多少可以說。

+0

+1 from me!發現 :) – t0mm13b