/*
* Copyright 2016 Hannes Dorfmann.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package android.support.v4.app;
/**
* With this utility class one can access the fragment backstack
*
* @author Hannes Dorfmann
*/
public class BackstackAccessor {
private BackstackAccessor() {
throw new IllegalStateException("Not instantiatable");
}
/**
* Checks whether or not a given fragment is on the backstack of the fragment manager (could also
* be on top of the backstack and hence visible)
*
* @param fragment The fragment you want to check if its on the back stack
* @return true, if the given Fragment is on the back stack, otherwise false (not on the back
* stack)
*/
public static boolean isFragmentOnBackStack(Fragment fragment) {
return fragment.isInBackStack();
}
/*
public static boolean isFragmentOnBackStack(Fragment fragment) {
FragmentManager fragmentManager = fragment.getFragmentManager();
int backStackSize = fragmentManager.getBackStackEntryCount();
for (int i = 0; i < backStackSize; i++) {
BackStackRecord stackEntry = (BackStackRecord) fragmentManager.getBackStackEntryAt(i);
int opsCount = stackEntry.mOps == null ? 0 : stackEntry.mOps.size();
if (opsCount > 0) {
BackStackRecord.Op op = stackEntry.mOps.get(opsCount-1);
if (op.fragment == fragment) {
return true;
}
}
}
return false;
}
*/
/*
private static boolean findNext(@NonNull Fragment toFind, @Nullable BackStackRecord.Op next) {
if (next == null) {
return false;
}
if (toFind == next.fragment) {
return true;
} else {
return findNext(toFind, next.next);
}
}
private static boolean findPrevious(@NonNull Fragment toFind,
@Nullable BackStackRecord.Op previous) {
if (previous == null) {
return false;
}
if (toFind == previous.fragment) {
return true;
} else {
return findPrevious(toFind, previous.prev);
}
}
*/
}