react-native-navigation的迁移库

NavigationCommandsHandler.java 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package com.reactnativenavigation.controllers;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import com.reactnativenavigation.NavigationApplication;
  5. import com.reactnativenavigation.params.ActivityParams;
  6. import com.reactnativenavigation.params.ScreenParams;
  7. import com.reactnativenavigation.params.parsers.ActivityParamsParser;
  8. import com.reactnativenavigation.params.parsers.ScreenParamsParser;
  9. public class NavigationCommandsHandler {
  10. private static final String ACTIVITY_PARAMS_BUNDLE = "ACTIVITY_PARAMS_BUNDLE";
  11. static ActivityParams getActivityParams(Intent intent) {
  12. return ActivityParamsParser.parse(intent.getBundleExtra(NavigationCommandsHandler.ACTIVITY_PARAMS_BUNDLE));
  13. }
  14. /**
  15. * start a new activity with CLEAR_TASK | NEW_TASK
  16. *
  17. * @param params ActivityParams as bundle
  18. */
  19. public static void startApp(Bundle params) {
  20. Intent intent = new Intent(NavigationApplication.instance, NavigationActivity.class);
  21. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
  22. intent.putExtra(ACTIVITY_PARAMS_BUNDLE, params);
  23. NavigationApplication.instance.startActivity(intent);
  24. }
  25. public static void push(Bundle screenParams) {
  26. final NavigationActivity currentActivity = NavigationActivity.currentActivity;
  27. if (currentActivity == null) {
  28. return;
  29. }
  30. final ScreenParams params = ScreenParamsParser.parse(screenParams);
  31. NavigationApplication.instance.runOnMainThread(new Runnable() {
  32. @Override
  33. public void run() {
  34. currentActivity.push(params);
  35. }
  36. });
  37. }
  38. public static void pop(Bundle screenParams) {
  39. final NavigationActivity currentActivity = NavigationActivity.currentActivity;
  40. if (currentActivity == null) {
  41. return;
  42. }
  43. final ScreenParams params = ScreenParamsParser.parse(screenParams);
  44. NavigationApplication.instance.runOnMainThread(new Runnable() {
  45. @Override
  46. public void run() {
  47. currentActivity.pop(params);
  48. }
  49. });
  50. }
  51. public static void popToRoot(Bundle screenParams) {
  52. final NavigationActivity currentActivity = NavigationActivity.currentActivity;
  53. if (currentActivity == null) {
  54. return;
  55. }
  56. final ScreenParams params = ScreenParamsParser.parse(screenParams);
  57. NavigationApplication.instance.runOnMainThread(new Runnable() {
  58. @Override
  59. public void run() {
  60. currentActivity.popToRoot(params);
  61. }
  62. });
  63. }
  64. public static void newStack(Bundle screenParams) {
  65. final NavigationActivity currentActivity = NavigationActivity.currentActivity;
  66. if (currentActivity == null) {
  67. return;
  68. }
  69. final ScreenParams params = ScreenParamsParser.parse(screenParams);
  70. NavigationApplication.instance.runOnMainThread(new Runnable() {
  71. @Override
  72. public void run() {
  73. currentActivity.newStack(params);
  74. }
  75. });
  76. }
  77. public static void setTopBarVisible(final String screenInstanceID, final boolean hidden, final boolean animated) {
  78. final NavigationActivity currentActivity = NavigationActivity.currentActivity;
  79. if (currentActivity == null) {
  80. return;
  81. }
  82. NavigationApplication.instance.runOnMainThread(new Runnable() {
  83. @Override
  84. public void run() {
  85. currentActivity.setTopBarVisible(screenInstanceID, hidden, animated);
  86. }
  87. });
  88. }
  89. }