Bla*_*ire 9 android fragment android-viewpager
我有一个带有4个标签的viewpager ..在每个标签中都有一个片段.我的第一个选项卡是带有表单的片段(例如用户),在我单击保存后,数据将插入到数据库中.我的第二个选项卡是另一个带有表单的片段,但它使用第一个选项卡中的数据(我从数据库中获取它)来填充微调器.现在,在我从第一个选项卡成功插入数据后,在我的第二个选项卡中,微调器是空的.因为我的db查询是在第二个片段中的onCreateView()中实现的,所以在应用程序启动时只调用一次,因此在tab 1 i tab2之间的更改不会在onCreateView()甚至onResume()上启动.对我来说有趣的是,如果我转到tab4然后返回到tab2,我的数据正好在我的微调器中,所以不知何故从我当前的选项卡中刷出两个选项卡来刷新我的片段.我的问题是,当onCreateView()只调用一次时,如何才能对我的片段进行适当的刷新?
编辑 我试图把那个方法psykhi建议像这样:
this.mViewPager.setOffscreenPageLimit(0);
this.mViewPager.setAdapter(this.mPagerAdapter);
this.mViewPager.setOnPageChangeListener(this);
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用.我错过了什么吗?
M-W*_*eEh 13
更新:有更好的方法,请看这里:动态更新ViewPager?
删除此答案的内容,因为这是访问Fragment内部的一种非常糟糕的方式ViewPager,请参阅上面的链接以获得更好的方法.
Dav*_*ave 11
我发现模拟"setOffscreenPageLimit(0)"行为的最好方法是使用OnPageChangeListener并覆盖适配器中的getItemPosition方法.像这样的东西:
在您的自定义寻呼机适配器中:
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
Run Code Online (Sandbox Code Playgroud)
然后在包含ViewPager的Activity中:
final MyPagerAdapter adapter = new MyPagerAdapter();
pager.setAdapter(adapter);
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
... anything you may need to do to handle pager state ...
adapter.notifyDataSetChanged(); //this line will force all pages to be loaded fresh when changing between fragments
}
}
Run Code Online (Sandbox Code Playgroud)
这应该与将OffscreenPageLimit设置为0具有相同的效果.但是,此功能与ViewPager旨在提供的功能相悖.如果您尝试以这种方式实现ViewPager,可能需要重新评估您的布局,以确保ViewPager确实是您想要使用的.
| 归档时间: |
|
| 查看次数: |
63636 次 |
| 最近记录: |