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