如何更新附加到片段onResume上片段的viewpager2内部的视图?

时间:2020-07-25 05:11:52

标签: android android-viewpager2

我有一个片段“片段列表”,其中包含Viewpager2

当用户单击按钮后,在完成表单更新后,“片段列表”将替换为“片段表格”。我将向后弹出“片段表格”。并且“片段列表”的OnResume将被称为

问题是,没有调用viewpager的片段生命周期,然后当调用“ Fragment List” OnResume时如何告诉viewpager的片段更新数据?

请注意,使用接口可能会产生NullPointerException,因为调用“片段列表” OnResume时,viewpager可能还没有准备好

谢谢

1 个答案:

答案 0 :(得分:0)

您可以在ViewPager片段中获取Fragment List的当前页面片段,并直接在其上调用一个方法来进行更改。

我假设您的ViewPager页面片段命名为PageFragment

onResume()返回时,在Fragment List片段的Fragment Form中添加以下内容

PageFragment fragment = (PageFragment) 
          mViewPagerAdapter.instantiateItem(mViewPager, mViewPager.getCurrentItem());
fragment.someMethod();  // pass your parameters

someMethod()中创建PageFragment方法,然后向其中传递要更改的参数。

您还需要处理onResume()片段的Fragment List是由于从Fragment Form或其他原因返回而被调用。

更新

instantiateItem不可用。我正在使用Viewpager2和ViewPagerAdapter扩展了FragmentStateAdapter

您是对的,以上代码适用于ViewPager,并且适用于ViewPager2,您可以使用以下方法获取当前页面的片段:

PagerFragment fragment = (PagerFragment)  getSupportFragmentManager()
                           .findFragmentByTag("f" + mViewPager.getCurrentItem());

然后您可以在其上调用一些方法。

fragment.someMethod();  // pass your parameters
相关问题