diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/FragmentNavigation.java b/src/main/java/ru/touchin/roboswag/components/navigation/FragmentNavigation.java index 0b1de69..0cb8c7d 100644 --- a/src/main/java/ru/touchin/roboswag/components/navigation/FragmentNavigation.java +++ b/src/main/java/ru/touchin/roboswag/components/navigation/FragmentNavigation.java @@ -135,7 +135,8 @@ public class FragmentNavigation { @SuppressWarnings("PMD.ShortMethodName") public boolean up() { - return backTo(backStackEntry -> backStackEntry.getName().endsWith(TOP_FRAGMENT_TAG_MARK)); + return backTo(backStackEntry -> + backStackEntry.getName() != null && backStackEntry.getName().endsWith(TOP_FRAGMENT_TAG_MARK)); } public void push(@NonNull final Class fragmentClass) { diff --git a/src/main/java/ru/touchin/roboswag/components/navigation/ViewController.java b/src/main/java/ru/touchin/roboswag/components/navigation/ViewController.java index f688f47..500918e 100644 --- a/src/main/java/ru/touchin/roboswag/components/navigation/ViewController.java +++ b/src/main/java/ru/touchin/roboswag/components/navigation/ViewController.java @@ -123,6 +123,12 @@ public class ViewController isDestroyed)); } + @NonNull + protected Observable untilStop(@NonNull final Observable observable) { + return observable.observeOn(AndroidSchedulers.mainThread()) + .takeUntil(isStartedSubject.filter(isStarted -> !isStarted)); + } + public void onStart() { isStartedSubject.onNext(true); }