I am trying to implement navigation between fragments using bottom navbar but when using NavigationUI.setupWithNavController when i click on any tab i get error java.lang.NullPointerException at androidx.navigation.ui.NavigationUI.onNavDestinationSelected please help i dont understand what not this way.
Exception
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.testfragments, PID: 12083
java.lang.NullPointerException
at androidx.navigation.ui.NavigationUI.onNavDestinationSelected(NavigationUI.kt:69)
at androidx.navigation.ui.NavigationUI.setupWithNavController$lambda-6(NavigationUI.kt:602)
at androidx.navigation.ui.NavigationUI.$r8$lambda$6wzEv9QqEZKdQFS1sQQy-bdQvgE(Unknown Source:0)
at androidx.navigation.ui.NavigationUI$$ExternalSyntheticLambda2.onNavigationItemSelected(Unknown Source:2)
at com.google.android.material.navigation.NavigationBarView$1.onMenuItemSelected(NavigationBarView.java:295)
at androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:834)
at androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)
at androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:985)
at com.google.android.material.navigation.NavigationBarMenuView$1.onClick(NavigationBarMenuView.java:133)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
MainActivity.java
public class MainActivity extends AppCompatActivity {
private NavController navController;
private AppBarConfiguration appBarConfiguration;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment_container);
NavController navController = navHostFragment.getNavController();
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_menu);
appBarConfiguration = new AppBarConfiguration.Builder(R.id.user, R.id.orders, R.id.products, R.id.companies, R.id.map).build();
NavigationUI.setupWithNavController(bottomNavigationView, navController);
}
@Override
public boolean onSupportNavigateUp() {
return navController.navigateUp();
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment_container"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:defaultNavHost="true"/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:menu="@menu/bottom_navigation_menu" />
bottom_navigation_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/user"
android:icon="@drawable/ic_user_black_24dp"
android:title="@string/title_user"/>
<item
android:id="@+id/orders"
android:icon="@drawable/ic_orders_black_24dp"
android:title="@string/title_orders"/>
<item
android:id="@+id/products"
android:icon="@drawable/ic_products_black_24dp"
android:title="@string/title_products"/>
<item
android:id="@+id/companies"
android:icon="@drawable/ic_companies_black_24dp"
android:title="@string/title_companies"/>
<item
android:id="@+id/map"
android:icon="@drawable/ic_map_black_24dp"
android:title="@string/title_map"/>
</menu>
nav_graph.xml
<?xml version="1.0" encoding="utf-8"?>
<navigation
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_graph"
app:startDestination="@+id/user">
<include app:graph="@navigation/user"/>
<include app:graph="@navigation/orders"/>
<include app:graph="@navigation/products"/>
<include app:graph="@navigation/companies"/>
<include app:graph="@navigation/map"/>
</navigation>