我这里有个大错误。
我正在尝试使用supportInvalidateOptionsMenu()更改操作栏菜单;但是执行该功能后,应用程序将关闭,没有错误。

奇怪的是,一切都可以在我的Galaxy Nexus(4.2.2)上正常运行,但不能在 friend 的手机(android 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();}
}

有人能帮我吗? :/

最佳答案

这很可能是线程问题。您应该在主线程之外看到有关UI访问的记录错误。也许您正在将它们过滤掉?查看完整的日志,而不仅仅是包的日志。

Building Web Apps in Webview:



尝试:

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

09-15 22:31