Il est fortement déconseillé de jouer de cette façon : s'il y a beaucoup de pages et qu'elles ne sont pas bien géréesFragment, il s'agit très probablement de MOO...
Si vous devez jouer de cette façon, veuillez vous référer au mode de gestion de FragmentStatePagerAdapter Le code clé est le suivant :
.
public abstract class FragmentStatePagerAdapter extends PagerAdapter {
@Override
public Object instantiateItem(ViewGroup container, int position) {
// If we already have this item instantiated, there is nothing
// to do. This can happen when we are restoring the entire pager
// from its saved state, where the fragment manager has already
// taken care of restoring the fragments we previously had instantiated.
if (mFragments.size() > position) {
Fragment f = mFragments.get(position);
if (f != null) {
return f;
}
}
if (mCurTransaction == null) {
mCurTransaction = mFragmentManager.beginTransaction();
}
Fragment fragment = getItem(position);
if (DEBUG) Log.v(TAG, "Adding item #" + position + ": f=" + fragment);
if (mSavedState.size() > position) {
Fragment.SavedState fss = mSavedState.get(position);
if (fss != null) {
fragment.setInitialSavedState(fss);
}
}
while (mFragments.size() <= position) {
mFragments.add(null);
}
fragment.setMenuVisibility(false);
fragment.setUserVisibleHint(false);
mFragments.set(position, fragment);
mCurTransaction.add(container.getId(), fragment);
return fragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
Fragment fragment = (Fragment) object;
if (mCurTransaction == null) {
mCurTransaction = mFragmentManager.beginTransaction();
}
if (DEBUG) Log.v(TAG, "Removing item #" + position + ": f=" + object
+ " v=" + ((Fragment)object).getView());
while (mSavedState.size() <= position) {
mSavedState.add(null);
}
mSavedState.set(position, fragment.isAdded()
? mFragmentManager.saveFragmentInstanceState(fragment) : null);
mFragments.set(position, null);
mCurTransaction.remove(fragment);
}
}
De plus, Activity a les fonctions de NavigateUp (navigation vers le haut) et BackPressed (touche retour). Il est donc également nécessaire de gérer la pile arrière de Fragment (qui est différente de la pile arrière de ). idem), c'est-à-dire appeler Activity.FragmentTransaction#addToBackStack(String)
La suggestion est la même que la réponse ci-dessus, essayez de ne pas faire cela. J'espère que vous pourrez analyser les différentes pages qui doivent être traitées pour voir si elles appartiennent à 同样性质. Par exemple, dans NetEase News, le contenu affiché sur les différentes chaînes est similaire, il est donc plus approprié d'utiliser Fragment. Cependant, parmi les éléments de paramétrage, le contenu de chaque élément de paramétrage est relativement indépendant, il est donc préférable d'utiliser différentes activités.
Si vous devez jouer de cette façon, veuillez vous référer au mode de gestion de
.FragmentStatePagerAdapter
Le code clé est le suivant :De plus,
Activity
a les fonctions de NavigateUp (navigation vers le haut) et BackPressed (touche retour). Il est donc également nécessaire de gérer la pile arrière deFragment
(qui est différente de la pile arrière de ). idem), c'est-à-dire appelerActivity
.FragmentTransaction#addToBackStack(String)
La suggestion est la même que la réponse ci-dessus, essayez de ne pas faire cela.
J'espère que vous pourrez analyser les différentes pages qui doivent être traitées pour voir si elles appartiennent à
同样性质
. Par exemple, dans NetEase News, le contenu affiché sur les différentes chaînes est similaire, il est donc plus approprié d'utiliser Fragment. Cependant, parmi les éléments de paramétrage, le contenu de chaque élément de paramétrage est relativement indépendant, il est donc préférable d'utiliser différentes activités.