ViewPager Fragment 白屏问题排查与状态保存修复
最近在处理 ViewPager 切换 Fragment 时,偶尔会遇到页面白屏的情况。经过反复调试,最终确认是系统在 Activity 重建或 Fragment 回收还原过程中,状态未能完整恢复导致的。
核心在于 onSaveInstanceState 的处理。默认情况下,如果 Fragment 没有正确保存当前选中项的位置,重建后可能无法恢复到之前的状态,从而显示空白。
解决方案是在宿主 Activity 中重写 onSaveInstanceState,手动记录 ViewPager 的当前位置并保存。
@Override
protected void onSaveInstanceState(Bundle outState) {
if (mViewPager != null) {
outState.putInt(STATE_POSITION, mViewPager.getCurrentItem());
}
// super.onSaveInstanceState(outState);
}
实际运行中,确保在 onCreate 或 onRestoreInstanceState 中读取该位置并设置 ViewPager 的当前项,即可避免白屏。注意:虽然示例中注释掉了 super 调用,但在常规开发中建议保留,除非有明确的性能优化需求。

