mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
203 lines
7.7 KiB
Java
203 lines
7.7 KiB
Java
|
package androidx.fragment.app;
|
||
|
|
||
|
import android.os.Bundle;
|
||
|
import android.os.Parcelable;
|
||
|
import android.util.Log;
|
||
|
import android.view.View;
|
||
|
import android.view.ViewGroup;
|
||
|
import androidx.fragment.app.Fragment;
|
||
|
import androidx.lifecycle.Lifecycle;
|
||
|
import androidx.viewpager.widget.PagerAdapter;
|
||
|
import java.util.ArrayList;
|
||
|
|
||
|
@Deprecated
|
||
|
/* loaded from: classes2.dex */
|
||
|
public abstract class FragmentStatePagerAdapter extends PagerAdapter {
|
||
|
public static final int BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT = 1;
|
||
|
|
||
|
@Deprecated
|
||
|
public static final int BEHAVIOR_SET_USER_VISIBLE_HINT = 0;
|
||
|
private static final boolean DEBUG = false;
|
||
|
private static final String TAG = "FragmentStatePagerAdapt";
|
||
|
private final int mBehavior;
|
||
|
private FragmentTransaction mCurTransaction;
|
||
|
private Fragment mCurrentPrimaryItem;
|
||
|
private boolean mExecutingFinishUpdate;
|
||
|
private final FragmentManager mFragmentManager;
|
||
|
private ArrayList<Fragment> mFragments;
|
||
|
private ArrayList<Fragment.SavedState> mSavedState;
|
||
|
|
||
|
public abstract Fragment getItem(int i);
|
||
|
|
||
|
@Deprecated
|
||
|
public FragmentStatePagerAdapter(FragmentManager fragmentManager) {
|
||
|
this(fragmentManager, 0);
|
||
|
}
|
||
|
|
||
|
public FragmentStatePagerAdapter(FragmentManager fragmentManager, int i) {
|
||
|
this.mCurTransaction = null;
|
||
|
this.mSavedState = new ArrayList<>();
|
||
|
this.mFragments = new ArrayList<>();
|
||
|
this.mCurrentPrimaryItem = null;
|
||
|
this.mFragmentManager = fragmentManager;
|
||
|
this.mBehavior = i;
|
||
|
}
|
||
|
|
||
|
@Override // androidx.viewpager.widget.PagerAdapter
|
||
|
public void startUpdate(ViewGroup viewGroup) {
|
||
|
if (viewGroup.getId() == -1) {
|
||
|
throw new IllegalStateException("ViewPager with adapter " + this + " requires a view id");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override // androidx.viewpager.widget.PagerAdapter
|
||
|
public Object instantiateItem(ViewGroup viewGroup, int i) {
|
||
|
Fragment.SavedState savedState;
|
||
|
Fragment fragment;
|
||
|
if (this.mFragments.size() > i && (fragment = this.mFragments.get(i)) != null) {
|
||
|
return fragment;
|
||
|
}
|
||
|
if (this.mCurTransaction == null) {
|
||
|
this.mCurTransaction = this.mFragmentManager.beginTransaction();
|
||
|
}
|
||
|
Fragment item = getItem(i);
|
||
|
if (this.mSavedState.size() > i && (savedState = this.mSavedState.get(i)) != null) {
|
||
|
item.setInitialSavedState(savedState);
|
||
|
}
|
||
|
while (this.mFragments.size() <= i) {
|
||
|
this.mFragments.add(null);
|
||
|
}
|
||
|
item.setMenuVisibility(false);
|
||
|
if (this.mBehavior == 0) {
|
||
|
item.setUserVisibleHint(false);
|
||
|
}
|
||
|
this.mFragments.set(i, item);
|
||
|
this.mCurTransaction.add(viewGroup.getId(), item);
|
||
|
if (this.mBehavior == 1) {
|
||
|
this.mCurTransaction.setMaxLifecycle(item, Lifecycle.State.STARTED);
|
||
|
}
|
||
|
return item;
|
||
|
}
|
||
|
|
||
|
@Override // androidx.viewpager.widget.PagerAdapter
|
||
|
public void destroyItem(ViewGroup viewGroup, int i, Object obj) {
|
||
|
Fragment fragment = (Fragment) obj;
|
||
|
if (this.mCurTransaction == null) {
|
||
|
this.mCurTransaction = this.mFragmentManager.beginTransaction();
|
||
|
}
|
||
|
while (this.mSavedState.size() <= i) {
|
||
|
this.mSavedState.add(null);
|
||
|
}
|
||
|
this.mSavedState.set(i, fragment.isAdded() ? this.mFragmentManager.saveFragmentInstanceState(fragment) : null);
|
||
|
this.mFragments.set(i, null);
|
||
|
this.mCurTransaction.remove(fragment);
|
||
|
if (fragment.equals(this.mCurrentPrimaryItem)) {
|
||
|
this.mCurrentPrimaryItem = null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override // androidx.viewpager.widget.PagerAdapter
|
||
|
public void setPrimaryItem(ViewGroup viewGroup, int i, Object obj) {
|
||
|
Fragment fragment = (Fragment) obj;
|
||
|
Fragment fragment2 = this.mCurrentPrimaryItem;
|
||
|
if (fragment != fragment2) {
|
||
|
if (fragment2 != null) {
|
||
|
fragment2.setMenuVisibility(false);
|
||
|
if (this.mBehavior == 1) {
|
||
|
if (this.mCurTransaction == null) {
|
||
|
this.mCurTransaction = this.mFragmentManager.beginTransaction();
|
||
|
}
|
||
|
this.mCurTransaction.setMaxLifecycle(this.mCurrentPrimaryItem, Lifecycle.State.STARTED);
|
||
|
} else {
|
||
|
this.mCurrentPrimaryItem.setUserVisibleHint(false);
|
||
|
}
|
||
|
}
|
||
|
fragment.setMenuVisibility(true);
|
||
|
if (this.mBehavior == 1) {
|
||
|
if (this.mCurTransaction == null) {
|
||
|
this.mCurTransaction = this.mFragmentManager.beginTransaction();
|
||
|
}
|
||
|
this.mCurTransaction.setMaxLifecycle(fragment, Lifecycle.State.RESUMED);
|
||
|
} else {
|
||
|
fragment.setUserVisibleHint(true);
|
||
|
}
|
||
|
this.mCurrentPrimaryItem = fragment;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override // androidx.viewpager.widget.PagerAdapter
|
||
|
public void finishUpdate(ViewGroup viewGroup) {
|
||
|
FragmentTransaction fragmentTransaction = this.mCurTransaction;
|
||
|
if (fragmentTransaction != null) {
|
||
|
if (!this.mExecutingFinishUpdate) {
|
||
|
try {
|
||
|
this.mExecutingFinishUpdate = true;
|
||
|
fragmentTransaction.commitNowAllowingStateLoss();
|
||
|
} finally {
|
||
|
this.mExecutingFinishUpdate = false;
|
||
|
}
|
||
|
}
|
||
|
this.mCurTransaction = null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override // androidx.viewpager.widget.PagerAdapter
|
||
|
public boolean isViewFromObject(View view, Object obj) {
|
||
|
return ((Fragment) obj).getView() == view;
|
||
|
}
|
||
|
|
||
|
@Override // androidx.viewpager.widget.PagerAdapter
|
||
|
public Parcelable saveState() {
|
||
|
Bundle bundle;
|
||
|
if (this.mSavedState.size() > 0) {
|
||
|
bundle = new Bundle();
|
||
|
Fragment.SavedState[] savedStateArr = new Fragment.SavedState[this.mSavedState.size()];
|
||
|
this.mSavedState.toArray(savedStateArr);
|
||
|
bundle.putParcelableArray("states", savedStateArr);
|
||
|
} else {
|
||
|
bundle = null;
|
||
|
}
|
||
|
for (int i = 0; i < this.mFragments.size(); i++) {
|
||
|
Fragment fragment = this.mFragments.get(i);
|
||
|
if (fragment != null && fragment.isAdded()) {
|
||
|
if (bundle == null) {
|
||
|
bundle = new Bundle();
|
||
|
}
|
||
|
this.mFragmentManager.putFragment(bundle, "f" + i, fragment);
|
||
|
}
|
||
|
}
|
||
|
return bundle;
|
||
|
}
|
||
|
|
||
|
@Override // androidx.viewpager.widget.PagerAdapter
|
||
|
public void restoreState(Parcelable parcelable, ClassLoader classLoader) {
|
||
|
if (parcelable != null) {
|
||
|
Bundle bundle = (Bundle) parcelable;
|
||
|
bundle.setClassLoader(classLoader);
|
||
|
Parcelable[] parcelableArray = bundle.getParcelableArray("states");
|
||
|
this.mSavedState.clear();
|
||
|
this.mFragments.clear();
|
||
|
if (parcelableArray != null) {
|
||
|
for (Parcelable parcelable2 : parcelableArray) {
|
||
|
this.mSavedState.add((Fragment.SavedState) parcelable2);
|
||
|
}
|
||
|
}
|
||
|
for (String str : bundle.keySet()) {
|
||
|
if (str.startsWith("f")) {
|
||
|
int parseInt = Integer.parseInt(str.substring(1));
|
||
|
Fragment fragment = this.mFragmentManager.getFragment(bundle, str);
|
||
|
if (fragment != null) {
|
||
|
while (this.mFragments.size() <= parseInt) {
|
||
|
this.mFragments.add(null);
|
||
|
}
|
||
|
fragment.setMenuVisibility(false);
|
||
|
this.mFragments.set(parseInt, fragment);
|
||
|
} else {
|
||
|
Log.w(TAG, "Bad fragment at key " + str);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|