Fragment
s:My1stFragment
和My2ndFragment
。 My1stFragment
内,我有一个ListView
,由数据库填充。此外,当我点击编辑按钮时,我会拨打第二个Fragment
来编辑数据。Fragment
中,我通过点击提交按钮编辑我的工资金额并更新我的数据库,然后返回My1stFragment
。My1stFragment
时,即使数据库已更新,我的ListView
也未更新。答案 0 :(得分:5)
在firstFragment中添加以下内容:
@Override
public void setUserVisibleHint(boolean isVisibleToUser){
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
Log.e("Visible hint","in visibleHint ()");
//add your method to set adapter to listview here by passing (getActivity().getApplicationContext()) parameter for context
}
}
现在,当您想要从其他片段获得第一个片段时,请使用:
((ActivityOfFragment) getActivity())./*viewPager if any.*/setCurrentItem(0/*fragment position*/, true);
答案 1 :(得分:2)
将您的PagerAdapter
课程视为
public static class MyPagerAdapter extends FragmentStatePagerAdapter
而不是
public static class MyPagerAdapter extends FragmentPagerAdapter
基本上,FragmentPagerAdapter
会将创建的Fragment
保留在内存中,而FragmentStatePagerAdapter
会在移入和移出视图时重新销毁并创建它们。
进一步考虑因素:
1。确保您不在任何setRetainInstance(true)
中呼叫Fragment
,否则将无法刷新/更新
2。添加
viewPager.setOffscreenPageLimit(0);
代码。这可以确保重新创建相邻的Fragment
。
3。而不是
Activity -> ViewPager -> Fragments
将结构创建为
Activity -> Fragment -> ViewPager -> Nested Fragments
这将确保在页面滑动时刷新每个Fragment
。有关实施,请参阅this post。
修改强>
如下面的评论所述,第2点是多余的。所以在这种情况下,只有第1点和第3点实际上是有用的。