discord-jadx/app/src/main/java/androidx/fragment/app/FragmentStatePagerAdapter.java

208 lines
8.1 KiB
Java

package androidx.fragment.app;
import android.os.Bundle;
import android.os.Parcelable;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.viewpager.widget.PagerAdapter;
import c.d.b.a.a;
import java.util.ArrayList;
@Deprecated
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;
@Deprecated
public FragmentStatePagerAdapter(@NonNull FragmentManager fragmentManager) {
this(fragmentManager, 0);
}
public FragmentStatePagerAdapter(@NonNull 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 destroyItem(@NonNull ViewGroup viewGroup, int i, @NonNull 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;
}
}
/* JADX INFO: finally extract failed */
@Override // androidx.viewpager.widget.PagerAdapter
public void finishUpdate(@NonNull ViewGroup viewGroup) {
FragmentTransaction fragmentTransaction = this.mCurTransaction;
if (fragmentTransaction != null) {
if (!this.mExecutingFinishUpdate) {
try {
this.mExecutingFinishUpdate = true;
fragmentTransaction.commitNowAllowingStateLoss();
this.mExecutingFinishUpdate = false;
} catch (Throwable th) {
this.mExecutingFinishUpdate = false;
throw th;
}
}
this.mCurTransaction = null;
}
}
@NonNull
public abstract Fragment getItem(int i);
@Override // androidx.viewpager.widget.PagerAdapter
@NonNull
public Object instantiateItem(@NonNull 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 boolean isViewFromObject(@NonNull View view, @NonNull Object obj) {
return ((Fragment) obj).getView() == view;
}
@Override // androidx.viewpager.widget.PagerAdapter
public void restoreState(@Nullable Parcelable parcelable, @Nullable 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 {
a.h0("Bad fragment at key ", str, "FragmentStatePagerAdapt");
}
}
}
}
}
@Override // androidx.viewpager.widget.PagerAdapter
@Nullable
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, a.k("f", i), fragment);
}
}
return bundle;
}
@Override // androidx.viewpager.widget.PagerAdapter
public void setPrimaryItem(@NonNull ViewGroup viewGroup, int i, @NonNull 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 startUpdate(@NonNull ViewGroup viewGroup) {
if (viewGroup.getId() == -1) {
throw new IllegalStateException("ViewPager with adapter " + this + " requires a view id");
}
}
}