2013-02-15 120 views
6

我在這裏遇到了一個很大的錯誤。 我試圖用supportInvalidateOptionsMenu()更改操作欄菜單;但是當函數執行時,應用程序關閉,沒有錯誤。Sherlock Actionbar invalidateOptionsMenu()

奇怪的是,一切都正常工作在我的Galaxy Nexus(4.2.2),但不會在我的朋友的手機(安卓4.0.3),也不在我的仿真器與Android 2.1

這裏是我的工作代碼:

protected void onCreate(Bundle savedInstanceState) { 
... 
actionbar = getSupportActionBar(); 
... 
myWebView = (WebView) findViewById(R.id.webview); 
myWebView.getSettings().setJavaScriptEnabled(true); 
myWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
myWebView.loadUrl(getString(R.string.site_load)); 
... 
} 

public class WebAppInterface { 
SherlockActivity mActivity; 
WebAppInterface(SherlockActivity c) {mActivity = c;} 
public void setrefreshon() {showRefresh = true; mActivity.supportInvalidateOptionsMenu();} 
} 

有人可以幫助我嗎? :/

回答

20

這很可能是一個線程問題。您應該在主線程外看到關於UI訪問的記錄錯誤。也許你正在過濾掉它們?看看完整的日誌,而不僅僅是你的包的日誌。

Building Web Apps in Webview

注:綁定到你的JavaScript運行在另一個線程 ,而不是在它構建了線程的對象。

嘗試:

mActivity.runOnUiThread(new Runnable(){ 
    @Override 
    public void run(){ 
    mActivity.supportInvalidateOptionsMenu(); 
    } 
}); 
+0

謝謝!解決了 – 2013-02-19 19:12:41

相關問題