【问题标题】:Restore ViewPager after onActivityResultonActivityResult 后恢复 ViewPager
【发布时间】:2020-12-23 13:40:36
【问题描述】:

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

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

调用onActivityResult时我需要恢复ViewPager,并且他的适配器中的片段必须来自恢复的supportFragmentManager片段。 IE。例如在 getItem 中我无法返回一些 新片段,因为 DialogFragment 是在另一个片段(已恢复)中创建的,它需要将一些结果返回到恢复的片段。

【问题讨论】:

标签: android android-viewpager onactivityresult fragmentstatepageradapter


【解决方案1】:

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

@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
 }

【讨论】:

  • 是的!这正是我需要的。非常感谢,很抱歉花了这么长时间才回复您。
  • 没问题,很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2018-04-16
  • 2014-03-22
  • 2016-07-05
  • 2015-11-16
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多