我在这里遇到了很大的错误。 我正在尝试使用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();}
}
有人能帮助我吗? :/
答案 0 :(得分:20)
这很可能是一个线程问题。您应该看到有关主线程之外的UI访问的记录错误。也许你是在过滤它们?查看完整日志,而不仅仅是包的日志。
来自Building Web Apps in Webview:
注意:绑定到JavaScript的对象在另一个对象中运行 线程,而不是在它构造的线程中。
尝试:
mActivity.runOnUiThread(new Runnable(){
@Override
public void run(){
mActivity.supportInvalidateOptionsMenu();
}
});