夏洛特动作条invalidateOptionsMenu()(Sherlock Actionbar i

2019-07-19 23:48发布

我在这里一个很大的错误。 我试图用supportInvalidateOptionsMenu()来改变动作条菜单; 但在执行的功能,在应用程序关闭,没有错误。

奇怪的是,一切都正常工作在我的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();}
}

有人能帮我吗? :/

Answer 1:

这是最有可能的一个线程问题。 现在你可以看到主线程之外约UI访问记录的错误。 也许你筛选出来? 看看完整的日志,而不仅仅是记录你的包。

从构建Web应用程序在webview :

注:绑定到你的JavaScript对象在另一个线程中运行,而不是在其构建的线程。

尝试:

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


文章来源: Sherlock Actionbar invalidateOptionsMenu()