viewPager.setOffscreenPageLimit(n);
其中n表示需要缓存的页面数量,推荐设置为tab的数量或者稍大于tab的数量。
adapter = new MyPagerAdapter(getChildFragmentManager(), tabLayout.getTabCount()); viewPager.setAdapter(adapter);
其中MyPagerAdapter是自定义的PagerAdapter,继承自FragmentStatePagerAdapter,必须重写getItem和getCount方法。
@Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt("someVarA", someVarA); outState.putInt("someVarB", someVarB); // Save additional variables as necessary }
在Fragment的onCreateView方法中,可以使用以下代码获得已保存的状态:
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (savedInstanceState != null) { someVarA = savedInstanceState.getInt("someVarA"); someVarB = savedInstanceState.getInt("someVarB"); } // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_my, container, false); }
通过以上方法,可以避免在旋转时重复出现碎片内容的问题,提高用户体验和界面稳定性。