在做项目的时候,功能是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