1

根控制器,它有一个RouterPagerAdapter,主机控制器 A 有它自己的RouterPagerAdapter

控制器 A1 由控制器 A 托管

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

轮换后,根控制器、A 和 A1 收到它们的onSaveInstanceState/onSaveViewState,但 A 和 A1 都没有收到它onRestoreInstanceState/onRestoreViewState

为什么会这样?确保所有孩子的状态恢复的正确实施是什么?

4

1 回答 1

0

onSaveViewState将被调用,但onRestoreViewState不会因为viewPager.setAdapter(null);线路而被调用。

当视图被销毁时,Conductor 文档中的示例将适配器设置为 null。

Override protected void onDestroyView(@NonNull View view) {
    viewPager.setAdapter(null);
    super.onDestroyView(view);
  }

因此,将RouterPagerAdapter调用没有根控制器,并将configureRouterrouternew Cont()

if (!router.hasRootController()) {
      router.setRoot(RouterTransaction.with(new Cont()));
    }

另请注意,当将 a 嵌套viewPager在另一个中时,两者都应具有唯一的 id,否则旋转时会覆盖 parent 的保存状态viewPager,并显示错误的当前项。

于 2017-04-20T22:44:32.847 回答