2
我现在面临一个奇怪的问题,我的应用程序:的Android的PhoneGap和菜单崩溃,web视图
当按下菜单按钮,我的应用程序崩溃。但!只有当我在webview中启动应用程序!
这个工程:这里
super.loadUrl("http://www.url.com");
菜单加载和一切都很好,但因为我不能让“shouldOverrideUrlLoading”使用super.loadurl工作,我试图启动应用程序直到webview中。
mwebview.loadurl("http://url.com");
确实工作,但如果我按菜单按钮,它会崩溃。
我的菜单程序做出像这样:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Menu that appears when menu button is pressed on device
Menu m_menu = menu;
m_menu.add(Menu.NONE, Menu.FIRST+6, 0, "Hjem");
m_menu.add(Menu.NONE, Menu.FIRST+7, 0, "Om");
m_menu.add(Menu.NONE, Menu.FIRST+5, 0, "Avslutt");
return super.onCreateOptionsMenu(menu);
}
我的继承人活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
super.setBooleanProperty("loadInWebView", true);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(false);
mWebView.requestFocusFromTouch();
mWebView.setWebViewClient(new HelloWebViewClient());
mWebView.setWebChromeClient(new WebChromeClient());
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
super.loadUrl("http://www.url.com/app/index");
//mWebView.loadurl("url");
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
继承人的错误在目录下载:
03-03 10:00:26.893: E/AndroidRuntime(350): FATAL EXCEPTION: main
03-03 10:00:26.893: E/AndroidRuntime(350): java.lang.NullPointerException
03-03 10:00:26.893: E/AndroidRuntime(350): at com.phonegap.DroidGap.postMessage(DroidGap.java:943)
03-03 10:00:26.893: E/AndroidRuntime(350): at com.phonegap.DroidGap.onCreateOptionsMenu(DroidGap.java:1374)
03-03 10:00:26.893: E/AndroidRuntime(350): at blogreel.app.HelloAppActivity.onCreateOptionsMenu(HelloAppActivity.java:44)
03-03 10:00:26.893: E/AndroidRuntime(350): at android.app.Activity.onCreatePanelMenu(Activity.java:2148)
03-03 10:00:26.893: E/AndroidRuntime(350): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:305)
03-03 10:00:26.893: E/AndroidRuntime(350): at com.android.internal.policy.impl.PhoneWindow.onKeyDownPanel(PhoneWindow.java:550)
03-03 10:00:26.893: E/AndroidRuntime(350): at com.android.internal.policy.impl.PhoneWindow.onKeyDown(PhoneWindow.java:1192)
03-03 10:00:26.893: E/AndroidRuntime(350): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1648)
03-03 10:00:26.893: E/AndroidRuntime(350): at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2471)
03-03 10:00:26.893: E/AndroidRuntime(350): at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2441)
03-03 10:00:26.893: E/AndroidRuntime(350): at android.view.ViewRoot.handleMessage(ViewRoot.java:1735)
03-03 10:00:26.893: E/AndroidRuntime(350): at android.os.Handler.dispatchMessage(Handler.java:99)
03-03 10:00:26.893: E/AndroidRuntime(350): at android.os.Looper.loop(Looper.java:123)
03-03 10:00:26.893: E/AndroidRuntime(350): at android.app.ActivityThread.main(ActivityThread.java:4627)
03-03 10:00:26.893: E/AndroidRuntime(350): at java.lang.reflect.Method.invokeNative(Native Method)
03-03 10:00:26.893: E/AndroidRuntime(350): at java.lang.reflect.Method.invoke(Method.java:521)
03-03 10:00:26.893: E/AndroidRuntime(350): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-03 10:00:26.893: E/AndroidRuntime(350): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-03 10:00:26.893: E/AndroidRuntime(350): at dalvik.system.NativeStart.main(Native Method)
这样的IM问: 任何方式在直接加载到webview时使我的菜单工作? 或者当使用“super.loadurl”
编辑 要补充一句的第一个页面加载super.loadurl做工作,使在所有网址“Shouldoverrideurl”的工作。指定的网址具有链接,点击后链接会在同一个网页视图中重定向。但是,第二页的链接将在新的浏览器中触发。
任何指针是极大的赞赏:)
嗨,谢谢您使用mWebView.loadurl代替super.loadurl的方法?你的方法在我的项目上崩溃,但生病继续尝试=)它告诉我menuitem item = menu.add行永远不会被读取。哼! – Havihavi 2012-03-03 10:02:13
不,我使用* super.loadUrl(“file:///android_asset/www/index.html”); * 我已经更新了我的示例 – 2012-03-03 10:38:29
另外请注意* super.onCreateOptionsMenu(menu); * at the – 2012-03-03 10:40:42