6

ここで大きなエラーが発生しました。supportInvalidateOptionsMenu();を使用してアクションバーメニューを変更しようとしています。ただし、関数が実行されると、アプリケーションはエラーなしで閉じます。

奇妙なことに、Galaxy Nexus(4.2.2)ではすべてが正常に機能しますが、友人のモバイル(android 4.0.3)やandroid2.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();}
}

誰かが私を助けることができますか?:/

4

1 に答える 1

20

これはおそらくスレッドの問題です。メインスレッド外のUIアクセスに関するログエラーが表示されるはずです。おそらくあなたはそれらを除外していますか?パッケージのログだけでなく、完全なログを確認してください。

WebviewでのWebアプリの構築から:

注:JavaScriptにバインドされているオブジェクトは、それが構築されたスレッドではなく、別のスレッドで実行されます。

試す:

mActivity.runOnUiThread(new Runnable(){
  @Override
  public void run(){
    mActivity.supportInvalidateOptionsMenu();
  }
});
于 2013-02-18T15:10:04.313 に答える