From f984f9d5b218f6a30504373baa379f083dbc00e9 Mon Sep 17 00:00:00 2001 From: Diego Romar <18450339+doromaraujo@users.noreply.github.com> Date: Tue, 20 Jan 2026 17:58:40 -0300 Subject: [PATCH 1/2] Keep fragments from inflating repeatedly When tapping in a given option in Navigation Drawer multiple times --- app/src/main/java/io/netbird/client/MainActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/netbird/client/MainActivity.java b/app/src/main/java/io/netbird/client/MainActivity.java index 666b950..9adc2ff 100644 --- a/app/src/main/java/io/netbird/client/MainActivity.java +++ b/app/src/main/java/io/netbird/client/MainActivity.java @@ -317,7 +317,9 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) { return true; } - navController.navigate(id); + // Use NavigationUI which handles launchSingleTop and saveState/restoreState + // This prevents fragment recreation and preserves state when alternating between destinations + NavigationUI.onNavDestinationSelected(item, navController); binding.drawerLayout.closeDrawers(); return false; } From 79f58480bba4099fbb673d098769df4e8055580e Mon Sep 17 00:00:00 2001 From: Diego Romar <18450339+doromaraujo@users.noreply.github.com> Date: Tue, 20 Jan 2026 18:14:14 -0300 Subject: [PATCH 2/2] Return boolean onNavigationItemSelected Indicating if the NavController handled navigation to the fragment successfully --- app/src/main/java/io/netbird/client/MainActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/netbird/client/MainActivity.java b/app/src/main/java/io/netbird/client/MainActivity.java index 9adc2ff..a4c5403 100644 --- a/app/src/main/java/io/netbird/client/MainActivity.java +++ b/app/src/main/java/io/netbird/client/MainActivity.java @@ -319,9 +319,9 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) { // Use NavigationUI which handles launchSingleTop and saveState/restoreState // This prevents fragment recreation and preserves state when alternating between destinations - NavigationUI.onNavDestinationSelected(item, navController); + boolean isHandled = NavigationUI.onNavDestinationSelected(item, navController); binding.drawerLayout.closeDrawers(); - return false; + return isHandled; } @Override