Fragment 中嵌套Fragment,更新数据,UI
2015-07-28 15:08
405 查看
在做项目的时候,功能是Fragment中有一个viewpager,viewpager中每一个又都是一个Fragment,记为fragment1,fragment2,fragment3。
这时fragment2中有一个功能,是点击里面的一个button,做一些操作,到返回时,要更新fragment2界面。
关键:只需要更新fragment2
查阅一些资料,最后的解决方案记录如下:
viewpager使用的adapter是继承自FragmentPagerAdapter
需要重写其中的instantiateItem方法,重写如下:
还有一个一定要注意,一定要重写getItemPosition,负责还是不会更新
这时fragment2中有一个功能,是点击里面的一个button,做一些操作,到返回时,要更新fragment2界面。
关键:只需要更新fragment2
查阅一些资料,最后的解决方案记录如下:
viewpager使用的adapter是继承自FragmentPagerAdapter
需要重写其中的instantiateItem方法,重写如下:
@Override public Object instantiateItem(ViewGroup container, int position) { //得到缓存的fragment Fragment fragment = (Fragment) super.instantiateItem(container, position); //得到tag,这点很重要 String fragmentTag = fragment.getTag();
//因为固定要更新第二个fragment,所以position固定写成1,而flag是我写的更新的标记,默认为false,如果要更新,则置为true if (flag && position == 1) { //如果这个fragment需要更新 FragmentTransaction ft = fm.beginTransaction(); //移除旧的fragment ft.remove(fragment); //换成新的fragment,定义成你想要的新的fragment fragment = new MyFragment();; //添加新fragment时必须用前面获得的tag,这点很重要 ft.add(container.getId(), fragment, fragmentTag); ft.attach(fragment); ft.commitAllowingStateLoss(); } return fragment; }
还有一个一定要注意,一定要重写getItemPosition,负责还是不会更新
public int getItemPosition(Object object) { if(flag){ return POSITION_NONE; } return super.getItemPosition(object); }
相关文章推荐
- leetcode 063 —— Unique Paths II
- UVA 540 Team Queue
- UIBarButtonItem类目-返回一个有图片的导航栏按钮
- IOS8 UITableViewCell线填充方法 不显示多余cell分割线
- HDU 1509 Windows Message Queue
- RegQueryValueEx函数不能获取到键值?
- hdoj 1509 Windows Message Queue【优先队列】
- android常用UI使用案例:ImageSwitcher和Gallery
- 【kmp】hdu1171 Number Sequence
- leetcode 062 —— Unique Paths
- android常用UI使用案例:SeekBar
- FineUI初学手册-部分JS整理
- UITableiView
- hdoj 1509 Windows Message Queue 【STL 优先队列】
- UICollectionView中cell的border问题
- 232.Implement Queue using Stacks(用栈实现队列)
- android常用UI使用案例:DatePicker和TimerPicker
- android常用UI使用案例:Spinner
- [LeetCode] Unique Paths II
- Android API Guides 阅读笔记(5)----Loader