2013-02-15 11 views
6

私はここで大きな誤りがあります。supportInvalidateOptionsMenu()でアクションバーメニューを変更しようとしています。関数が実行されると、アプリケーションはエラーなく終了します。Sherlock Actionbar invalidateOptionsMenu()

奇妙なことが私である。ここ

アンドロイド2.1

と、すべてが私のギャラクシーネクサス(4.2.2)上で正常に動作しますが、私の友人の携帯(アンドロイド4.0.3)で動作しないことも私のエミュレータでありますコード:

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

ありがとう!それが解決した –

関連する問題