react-native-navigation的迁移库

ChildController.java 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package com.reactnativenavigation.viewcontrollers;
  2. import android.app.Activity;
  3. import android.view.ViewGroup;
  4. import com.reactnativenavigation.parse.Options;
  5. import com.reactnativenavigation.presentation.OptionsPresenter;
  6. public abstract class ChildController<T extends ViewGroup> extends ViewController<T> {
  7. final OptionsPresenter presenter;
  8. private final ChildControllersRegistry childRegistry;
  9. public ChildControllersRegistry getChildRegistry() {
  10. return childRegistry;
  11. }
  12. public ChildController(Activity activity, ChildControllersRegistry childRegistry, String id, OptionsPresenter presenter, Options initialOptions) {
  13. super(activity, id, initialOptions);
  14. this.presenter = presenter;
  15. this.childRegistry = childRegistry;
  16. }
  17. @Override
  18. public void setDefaultOptions(Options defaultOptions) {
  19. presenter.setDefaultOptions(defaultOptions);
  20. }
  21. @Override
  22. public void onViewAppeared() {
  23. super.onViewAppeared();
  24. childRegistry.onViewAppeared(this);
  25. }
  26. @Override
  27. public void onViewDisappear() {
  28. super.onViewDisappear();
  29. childRegistry.onViewDisappear(this);
  30. }
  31. public void onViewBroughtToFront() {
  32. presenter.onViewBroughtToFront(getView(), options);
  33. }
  34. @Override
  35. public void applyOptions(Options options) {
  36. super.applyOptions(options);
  37. presenter.present(getView(), options);
  38. if (isRoot()) {
  39. presenter.applyRootOptions(getView(), options);
  40. }
  41. }
  42. protected boolean isRoot() {
  43. return getParentController() == null &&
  44. !(this instanceof Navigator) &&
  45. getView().getParent() != null;
  46. }
  47. }