onActivityResult 后恢复 ViewPager

Restore ViewPager after onActivityResult

提前谢谢大家。我的问题在这里: 有元素链

Activity 有 -> ViewPager 有几个 -> Fragments 有可能调用 DialogFragment 可以调用 startActivityForResult.

当Activity调用结果时,我需要恢复ViewPager,他的适配器中的片段必须来自恢复的supportFragmentManager 片段。 IE。例如在 getItem 中,我不能 return 一些 new Fragment,因为 DialogFragment 是在另一个片段(已恢复)中创建的,它需要 return 一些结果恢复片段。

如果我对你的理解正确,你需要像这里一样保存你的片段:

@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
    if (adapter != null) {
        outState.putParcelable(SAVED_FRAGMENTS, adapter.saveState());
    }
    super.onSaveInstanceState(outState);
}

然后您可以通过以下方式恢复它们:

 if (savedInstanceState != null && savedInstanceState.containsKey(SAVED_FRAGMENTS))   {
        adapter = new YourFragmentImplementation(getChildFragmentManager());
        adapter.restoreState(savedInstanceState.getParcelable(SAVED_FRAGMENTS), getContext().getClassLoader());
        Fragment restoredFragment = (Fragment) adapter.instantiateItem(viewPager, 0)
        // use restored fragment to add to adapter
 } else {
       // create a new fragment to add to adapter
 }