2017-04-20 9 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的保存狀態,並將顯示錯誤的當前項目。