2017-04-20 11 views
0

根控制器具有RouterPagerAdapter,它拥有自己的控制器A RouterPagerAdapter嵌套的RouterPagerAdapter不能恢复正在轮转的状态

控制器A1由控制器承载的

[ Root Controller ] 
[ A ] [ B ] 
[A1] [A2] 

在旋转时,根控制器,A和A 1接收其onSaveInstanceState/onSaveViewState,但既不A也不A1是接收它onRestoreInstanceState/onRestoreViewState

这是为什么? 确保所有儿童恢复其状态的正确实施方法是什么?

回答

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的保存状态,并将显示错误的当前项目。