我这里有个大错误。
我正在尝试使用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();
}
});