ViewPager-Fragmente verschwinden, wenn die Bildschirmdrehung geändert wird
Ich arbeite an Android-Anwendung, die enthältViewPager
mitFragment
s, wie folgt:
MainActivity
(MainActivityFragment
(screenSlideViewPager
(Fragment
s))), was bedeutet:
Activity
enthält Fragment
enthält ViewPager
enthält Fragment
s
Jetzt ist mein Problem, wenn ich das Gerät drehe oder die Bildschirmdrehung ändere, verschwinden alle Fragmente in ViewPager.
Irgendwelche Ideen, um dieses Problem zu lösen?
EDIT 1
MainActivity.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getSupportFragmentManager().findFragmentByTag(TAG) == null) {
final FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.add(android.R.id.content, new MainActivityFragment(), TAG);
ft.commit();
}
}
MainActivityFragment.java:
public class MainActivityFragment extends Fragment {
private ViewPager mPager = null;
private PagerAdapter mPageAdapter = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View reVal = inflater.inflate(R.layout.activity_main, container, false);
mPager = (ViewPager) reVal.findViewById(R.id.pagerMainContent);
mPageAdapter = new ScreenSlidePagerAdapter(getActivity().getFragmentManager());
mPager.setAdapter(mPageAdapter);
return reVal;
}
private MainGridViewFragment mainGridFragment;
private AlphabetGridViewFragment alphabetGridFragment;
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public android.app.Fragment getItem(int position) {
switch (position) {
case 1:
mainGridFragment = new MainGridViewFragment();
return mainGridFragment;
case 0:
alphabetGridFragment = new AlphabetGridViewFragment();
return alphabetGridFragment;
default:
return null;
}
}
@Override
public int getCount() {
return 2;
}
}
}
BEARBEITEN 2
OffensichtlichMainActivity
undMainActivityFragment
geladen sind, und der Beweis ist dieActionBar
, beachte auch dasViewPager
wird ebenfalls geladen, da Sie immer noch zwischen den Seiten navigieren können (das blaue Licht bedeutet, dass der Pager die letzte Seite erreicht hat), aber den Inhalt nicht sehen können.