嵌套的RouterPagerAdapter不能恢复正在轮转的状态
问题描述:
根控制器具有RouterPagerAdapter
,它拥有自己的控制器A RouterPagerAdapter
。嵌套的RouterPagerAdapter不能恢复正在轮转的状态
控制器A1由控制器承载的
[ Root Controller ]
[ A ] [ B ]
[A1] [A2]
在旋转时,根控制器,A和A 1接收其onSaveInstanceState/onSaveViewState
,但既不A也不A1是接收它onRestoreInstanceState/onRestoreViewState
。
这是为什么? 确保所有儿童恢复其状态的正确实施方法是什么?
答
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
的保存状态,并将显示错误的当前项目。