Reputation:
I have created a second activity, i have a web view in that, so I used this code to go back from the website contents to the home website, but if I press the back button app is stop working , anyone can help me ?
@Override public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (mWebView.canGoBack()) {
mWebView.goBack();
} else {
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
here is the log
08-25 18:00:48.805 24025-24025/com.example.jaisonjoseph.newsclient E/InputEventSender: Exception dispatching finished signal. 08-25 18:00:48.805 24025-24025/com.example.jaisonjoseph.newsclient E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback 08-25 18:00:48.806 24025-24025/com.example.jaisonjoseph.newsclient E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.webkit.WebView.canGoBack()' on a null object reference at com.example.jaisonjoseph.newsclient.Manorama.onKeyDown(Manorama.java:38) at android.view.KeyEvent.dispatch(KeyEvent.java:2655) at android.app.Activity.dispatchKeyEvent(Activity.java:2755) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2380) at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4558) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4514) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4036) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4089) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4055) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4192) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4063) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4249) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4036) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4089) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4055) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4063) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4036) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4089) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4055) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4225) at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4395) at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2299) at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1923) at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1914) at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2276) at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:148) at android.os.Looper.loop(Looper.java:151) at android.app.ActivityThread.main(ActivityThread.java:5706) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1033) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:828) 08-25 18:00:48.808 24025-24025/com.example.jaisonjoseph.newsclient E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.jaisonjoseph.newsclient, PID: 24025 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.webkit.WebView.canGoBack()' on a null object reference at com.example.jaisonjoseph.newsclient.Manorama.onKeyDown(Manorama.java:38) at android.view.KeyEvent.dispatch(KeyEvent.java:2655) at android.app.Activity.dispatchKeyEvent(Activity.java:2755) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2380) at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4558) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4514) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4036) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4089) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4055) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4192) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4063) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4249) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4036) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4089) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4055) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4063) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4036) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4089) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4055) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4225) at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4395) at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2299) at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1923) at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1914) at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2276) at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:148) at android.os.Looper.loop(Looper.java:151) at android.app.ActivityThread.main(ActivityThread.java:5706) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1033) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:828)
Upvotes: 0
Views: 795
Reputation: 2448
Your webview object is not initalized. get the webview Id and if it's !null then getback key pressed
@Override public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
WebView webView = (WebView) findViewById(R.id.myWebView);
if(webView!=null){
if (mWebView.canGoBack()) {
mWebView.goBack();
}
} else {
finish();
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
Upvotes: 0