Sherlock Actionbar invalidateOptionsMenu()

时间:2013-02-15 16:24:59

标签: 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();}
}

有人能帮助我吗? :/

1 个答案:

答案 0 :(得分:20)

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

来自Building Web Apps in Webview

  

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

尝试:

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