FragmentPager没有更新视图
问题描述:
我试图做其他答案的建议,但是当我查看日志时,getItemPosition返回POSITION_NONE之后,位置0不会被调用getItem,任何想法?当getItemPosition被返回时,我也尝试覆盖destoryItem,它会被调用但没有任何反应。FragmentPager没有更新视图
公共类ProvidersActivityPagerAdapter扩展FragmentPagerAdapter {
private ArrayList<String> fragments;
public ProvidersActivityPagerAdapter(FragmentManager fm) {
super(fm);
fragments=new ArrayList<String>();
if(provider.isInitialized()){
fragments.add(BaseDetailsFragment.class.getName());
}else{
fragments.add(BaseAuthFragment.class.getName());
}
this.fm=fm;
}
@Override
public int getCount(){
return fragments.size();
}
@Override
public int getItemPosition(Object object) {
AppUtils.logI("Get Item Position: "+POSITION_NONE+" "+object.getClass().getName());
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
AppUtils.logI("Get Fragment for: "+position);
String f=fragments.get(position);
if(f.equals(BaseDetailsFragment.class.getName())){
return provider.getDetailFragment();
}
if(f.equals(BaseAuthFragment.class.getName())){
return provider.getAuthFragment();
}
if(f.equals(BaseSelectorFragment.class.getName())){
return provider.getCurrentSelector();
}
return new Fragment();
}
private void addItem(int loc,String fa,String tag){
this.fragments.add(loc,fa);
AppUtils.logI(fragments.toString());
notifyDataSetChanged(); //only creates the new fragment but not updating the old ones.
mViewPager.setCurrentItem(loc);
}
答
看来,FragmentPagerAdapter支持库版本并没有在破坏项目。所以解决方案是在构建页面适配器时保存片段管理器并覆盖destoryItem()函数。请注意,这可能与支持库的未来版本不兼容。
@Override
public void destroyItem(ViewGroup container,int position,Object object){
super.destroyItem(container, position, object);
FragmentTransaction bt = fm.beginTransaction();
bt.remove((Fragment)object);
bt.commit();
}
这只是没有记录在任何地方?我一直试图解决这个问题一段时间,只是偶然发现了2012年发布的这个答案。我认为这不可能仍然是我在2015年的问题,但肯定的是,它的工作。这没有得到解决? – NoChinDeluxe 2015-11-03 22:00:46