根控制器具有RouterPagerAdapter
,主机控制器A具有自己的RouterPagerAdapter
。
控制器A1由控制器A托管
[ Root Controller ]
[ A ] [ B ]
[A1] [A2]
旋转后,根控制器,A和A1会收到onSaveInstanceState/onSaveViewState
,但A和A1都不接收onRestoreInstanceState/onRestoreViewState
。
为什么会这样? 确保所有孩子恢复状态的正确实施是什么?
答案 0 :(得分:0)
onSaveViewState
,但由于onRestoreViewState
行,系统不会调用viewPager.setAdapter(null);
。
当视图被销毁时,Conductor的文档中的示例将适配器设置为null。
Override protected void onDestroyView(@NonNull View view) {
viewPager.setAdapter(null);
super.onDestroyView(view);
}
因此,RouterPagerAdapter
会调用configureRouter
不的router
有一个根控制器,并new Cont()
if (!router.hasRootController()) {
router.setRoot(RouterTransaction.with(new Cont()));
}
另请注意,将viewPager
嵌套在另一个中时,两者都应具有唯一ID,否则旋转时将覆盖父viewPager
的保存状态,并显示错误的当前项。