user5342000
user5342000

Reputation:

canGoBack() is not working in my Second Activity

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

Answers (1)

Amod Gokhale
Amod Gokhale

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

Related Questions