I have one quite tricky query about how to implement onBackPressed for both DrawerLayout which is in MainActivity and in fragment for webView.
Following is tree structure of my android app.
                                ----------- HomeFragment(WebView)
                               |
MainActivity(Drawer)----------- ----------- DashBoardFragment
                               |
                                ----------- NotificationFragment
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
    android:id="@+id/drawer"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <fragment
            android:id="@+id/main"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/mobile_navigation"
            tools:ignore="FragmentTagUsage" />
        <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/nav_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="0dp"
            android:layout_marginEnd="0dp"
            android:background="?android:attr/windowBackground"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:menu="@menu/bottom_nav_menu" />
    </androidx.constraintlayout.widget.ConstraintLayout>
    <com.google.android.material.navigation.NavigationView
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        app:menu="@menu/bottom_nav_menu"
        android:id="@+id/navigationView">
    </com.google.android.material.navigation.NavigationView>
</androidx.drawerlayout.widget.DrawerLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity {
/* code of Drawer is here */
    }
    @Override
    public void onBackPressed() {
        if (drawer.isDrawerOpen(GravityCompat.START))
        {
            drawer.closeDrawer(GravityCompat.START);
        }
        else if (webView.canGoBack()){
            webView.goBack();
        }else {
            super.onBackPressed();
        }
    }
}
Home_Fragment.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.home.HomeFragment">
    <LinearLayout
        android:layout_width="409dp"
        android:layout_height="729dp"
        android:orientation="vertical"
        tools:layout_editor_absoluteX="1dp"
        tools:layout_editor_absoluteY="1dp"
        tools:ignore="MissingConstraints">
        <WebView
            android:id="@+id/myWebView"
            android:layout_width="match_parent"
            android:layout_height="601dp" />
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
HomeFragment.java
public class HomeFragment extends Fragment {
   /* code of WebView is here */
}
/* here is problem */
    @Override
    public void onBackPressed() {
        /* have place code here to handle back Press button */
    }
}
My Query :-
- I have to use onBackPressed() method in MainActivity.java for DrawerLayout.
- And onBackPressed() method in HomeFragment.java for WebView.
The problem is I can use onBackPressed() method either in MainActivity.java or HomeFragment.java but I have to use onBackPressed() method in both files.
Look at screenshot, red square is my webview which is in Home_Fragment, i want 1 onBackPressed Method for whole app i mean for Drawerlayout and 1 onBackPressed() method for inside of webView
Its the opened post inside the webview, onBackPressed Method will send me back to my webview main page when i click backButton
But I am getting this message when i press backbutton
[EDIT 1] : error code in RUN terminal
E/InputEventSender: Exception dispatching finished signal.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.webkit.WebView.canGoBack()' on a null object reference
        at com.example.modapk4everyone.MainActivity.onBackPressed(MainActivity.java:60)
        at android.app.Activity.onKeyUp(Activity.java:3641)
        at android.view.KeyEvent.dispatch(KeyEvent.java:2844)
        at android.app.Activity.dispatchKeyEvent(Activity.java:3958)
        at androidx.core.app.ComponentActivity.superDispatchKeyEvent(ComponentActivity.java:122)
        at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:84)
        at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:140)
        at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:558)
        at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
        at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:2814)
        at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:367)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5414)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5282)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4789)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4842)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4808)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4948)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4816)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5005)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4789)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4842)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4808)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4816)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4789)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4842)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4808)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4981)
        at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5142)
        at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3064)
        at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2607)
        at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2598)
        at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3041)
        at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:143)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:174)
        at android.app.ActivityThread.main(ActivityThread.java:7397)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.modapk4everyone, PID: 20714
    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.webkit.WebView.canGoBack()' on a null object reference
        at com.example.modapk4everyone.MainActivity.onBackPressed(MainActivity.java:60)
        at android.app.Activity.onKeyUp(Activity.java:3641)
        at android.view.KeyEvent.dispatch(KeyEvent.java:2844)
        at android.app.Activity.dispatchKeyEvent(Activity.java:3958)
        at androidx.core.app.ComponentActivity.superDispatchKeyEvent(ComponentActivity.java:122)
        at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:84)
        at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:140)
        at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:558)
        at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
        at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:2814)
        at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:367)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5414)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5282)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4789)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4842)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4808)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4948)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4816)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5005)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4789)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4842)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4808)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4816)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4789)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4842)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4808)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4981)
        at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5142)
        at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3064)
        at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2607)
        at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2598)
        at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3041)
        at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:143)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:174)
        at android.app.ActivityThread.main(ActivityThread.java:7397)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)
I/Process: Sending signal. PID: 20714 SIG: 9



