Я знаю, что обычно для фрагментов вы можете сделать что-то подобное в OnCreate вашей activitiy, чтобы получить уже созданный фрагмент, который имеет .setRetainInstance (истинный) об изменении ориентации вместо создание нового фрагмента:Как предотвратить фрагмент фрагмента пейджера от воссоздания при изменении ориентации?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
TestFragment test = new TestFragment();
test.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction().replace(android.R.id.content, test, "your_fragment_tag").commit();
} else {
TestFragment test = (TestFragment) getSupportFragmentManager().findFragmentByTag("your_fragment_tag");
}
}
Моих Вопрос в том, как сохранить и извлечь такой фрагмент, который находится внутри viewpager? Воспроизведение фрагмента - это не то, что я хочу. Даже если бы я мог получить эти теги фрагментов, обработчики viewpager прикрепляют фрагмент, поэтому не представляется возможным проверить существующий фрагмент и получить его вместо создания нового. Вот моя деятельность и пейджер:
public class MainActivity extends AppCompatActivity {
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(new PagerAdapter(getSupportFragmentManager()));
}
public class PagerAdapter extends FragmentStatePagerAdapter {
public PagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return new FragmentA();
case 1:
return new SettingsFragment();
default:
return null;
}
}
@Override
public int getCount() {
return 2;
}
}
}