嵌套路由器寻呼机适配器在轮换时未恢复状态



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

最新更新