Ram*_*ala 5 android android-listview android-fragments android-viewpager android-sqlite

Fragment秒:My1stFragment和My2ndFragment. My1stFragment我有一个ListView由数据库填充的内部.此外,当我点击编辑按钮时,我调用第二个Fragment来编辑数据.Fragment我编辑我的工资金额并通过点击提交按钮更新我的数据库并返回My1stFragment.My1stFragment,我ListView也没有更新.在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
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当您想要从其他片段中获取第一个片段时,请使用:
((ActivityOfFragment) getActivity())./*viewPager if any.*/setCurrentItem(0/*fragment position*/, true);
Run Code Online (Sandbox Code Playgroud)
将您的PagerAdapter班级派生为
public static class MyPagerAdapter extends FragmentStatePagerAdapter
Run Code Online (Sandbox Code Playgroud)
代替
public static class MyPagerAdapter extends FragmentPagerAdapter
Run Code Online (Sandbox Code Playgroud)
基本上,FragmentPagerAdapter将创建的Fragments 保留在内存中,同时FragmentStatePagerAdapter在它们移入和移出视图时销毁并重新创建它们。
进一步考虑:
1.确保您没有调用任何setRetainInstance(true)s Fragment,否则它们将不会被刷新/更新。
2.添加
viewPager.setOffscreenPageLimit(0);
Run Code Online (Sandbox Code Playgroud)
到你的代码。这确保了相邻的Fragments 被重新创建。
3.代替
Activity -> ViewPager -> Fragments
Run Code Online (Sandbox Code Playgroud)
创建结构为
Activity -> Fragment -> ViewPager -> Nested Fragments
Run Code Online (Sandbox Code Playgroud)
这将确保每个页面都Fragment在页面滑动时刷新。请参阅这篇文章了解实施情况。
编辑:
正如下面评论中所讨论的,第 2 点是多余的。所以在这种情况下只有第 1 点和第 3 点实际上有用。
| 归档时间: |
|
| 查看次数: |
4753 次 |
| 最近记录: |