我有一个片段“片段列表”,其中包含Viewpager2
。
当用户单击按钮后,在完成表单更新后,“片段列表”将替换为“片段表格”。我将向后弹出“片段表格”。并且“片段列表”的OnResume
将被称为
问题是,没有调用viewpager的片段生命周期,然后当调用“ Fragment List” OnResume
时如何告诉viewpager的片段更新数据?
请注意,使用接口可能会产生NullPointerException
,因为调用“片段列表” OnResume
时,viewpager
可能还没有准备好
谢谢
答案 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