Sherlock Actionbar invalidateOptionsMenu()

Art*_*uto 6 android web-applications webview actionbarsherlock

我在这里遇到了很大的错误.我正在尝试使用supportInvalidateOptionsMenu()更改操作栏菜单; 但是当执行该函数时,应用程序关闭,没有错误.

奇怪的是,一切都在我的Galaxy Nexus(4.2.2)上正常工作,但不能在我朋友的手机(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();}
}
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?:/

Del*_*yan 20

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

Webview中构建Web应用程序:

注意:绑定到JavaScript的对象在另一个线程中运行,而不是在构造它的线程中运行.

尝试:

mActivity.runOnUiThread(new Runnable(){
  @Override
  public void run(){
    mActivity.supportInvalidateOptionsMenu();
  }
});
Run Code Online (Sandbox Code Playgroud)