您的位置:首页 > 产品设计 > UI/UE

Fragment 中嵌套Fragment,更新数据,UI

2015-07-28 15:08 405 查看
在做项目的时候,功能是Fragment中有一个viewpager,viewpager中每一个又都是一个Fragment,记为fragment1,fragment2,fragment3。

这时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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: