Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. import android.view.Menu;
  2. import android.view.MenuItem;
  3.  
  4. import androidx.annotation.NonNull;
  5. import androidx.navigation.NavController;
  6. import androidx.navigation.NavDestination;
  7. import androidx.navigation.NavGraph;
  8. import androidx.navigation.NavOptions;
  9.  
  10. // Example with default animations:
  11. // NavOptions.Builder builder = new NavOptions.Builder()
  12. // .setEnterAnim(R.anim.nav_default_enter_anim)
  13. // .setExitAnim(R.anim.nav_default_exit_anim)
  14. // .setPopEnterAnim(R.anim.nav_default_pop_enter_anim)
  15. // .setPopExitAnim(R.anim.nav_default_pop_exit_anim);
  16. // NavigationUIExtension.onNavDestinationSelected(item, nav, builder);
  17. //
  18. // Created by Jonatan Hamberg on 18.3.2019.
  19. // (C) 2019 - University of Helsinki
  20.  
  21. public class NavigationUIExtension {
  22. public static boolean onNavDestinationSelected(@NonNull MenuItem item,
  23. @NonNull NavController navController,
  24. @NonNull NavOptions.Builder builder) {
  25. if ((item.getOrder() & Menu.CATEGORY_SECONDARY) == 0) {
  26. NavDestination destination = findStartDestination(navController.getGraph());
  27. builder.setPopUpTo(destination.getId(), false);
  28. }
  29. NavOptions options = builder.build();
  30. try {
  31. navController.navigate(item.getItemId(), null, options);
  32. return true;
  33. } catch (IllegalArgumentException e) {
  34. return false;
  35. }
  36. }
  37.  
  38. private static NavDestination findStartDestination(@NonNull NavGraph graph) {
  39. NavDestination startDestination = graph;
  40. while (startDestination instanceof NavGraph) {
  41. NavGraph parent = (NavGraph) startDestination;
  42. startDestination = parent.findNode(parent.getStartDestination());
  43. }
  44. return startDestination;
  45. }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement