Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.view.Menu;
- import android.view.MenuItem;
- import androidx.annotation.NonNull;
- import androidx.navigation.NavController;
- import androidx.navigation.NavDestination;
- import androidx.navigation.NavGraph;
- import androidx.navigation.NavOptions;
- // Example with default animations:
- // NavOptions.Builder builder = new NavOptions.Builder()
- // .setEnterAnim(R.anim.nav_default_enter_anim)
- // .setExitAnim(R.anim.nav_default_exit_anim)
- // .setPopEnterAnim(R.anim.nav_default_pop_enter_anim)
- // .setPopExitAnim(R.anim.nav_default_pop_exit_anim);
- // NavigationUIExtension.onNavDestinationSelected(item, nav, builder);
- //
- // Created by Jonatan Hamberg on 18.3.2019.
- // (C) 2019 - University of Helsinki
- public class NavigationUIExtension {
- public static boolean onNavDestinationSelected(@NonNull MenuItem item,
- @NonNull NavController navController,
- @NonNull NavOptions.Builder builder) {
- if ((item.getOrder() & Menu.CATEGORY_SECONDARY) == 0) {
- NavDestination destination = findStartDestination(navController.getGraph());
- builder.setPopUpTo(destination.getId(), false);
- }
- NavOptions options = builder.build();
- try {
- navController.navigate(item.getItemId(), null, options);
- return true;
- } catch (IllegalArgumentException e) {
- return false;
- }
- }
- private static NavDestination findStartDestination(@NonNull NavGraph graph) {
- NavDestination startDestination = graph;
- while (startDestination instanceof NavGraph) {
- NavGraph parent = (NavGraph) startDestination;
- startDestination = parent.findNode(parent.getStartDestination());
- }
- return startDestination;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement