【发布时间】:2011-12-03 17:10:49
【问题描述】:
好的,问题和this post差不多,但是那里的解决方案并没有解决我的问题。
我使用FragmentPagerAdapter 和一个List 持有Fragments,如下所示。
public class ViewPageAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
...
}
而我的Fragment 会像这样覆盖 onCreateView 方法。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
return inflater.inflate(theLayoutResourceId, container, false);
}
如果使用this post中的方法(覆盖int getItemPosition(Object object)返回POSITION_NONE),我会得到
java.util.ConcurrentModificationException 在调用notifyDataSetChanged() 之后。
方法调用流程是这样的。
- 在
ViewPager页面索引1,通过单击Button打开Dialog(与Facebook Android示例中的LoginButton相同) - 对话框关闭后 (
onAuthSucceed),删除ViewPager页面索引 1 并添加另一个页面作为页面索引 1 - 使用
notifyDataSetChanged强制更新
在将Fragment 添加到适配器之前,我尝试了许多其他方法来删除Fragment,但页面不会更新为新内容。
我刚刚找到了一种让页面空白的方法...
viewpager.removeViewAt(1);
viewpagerAdapter.removeItem(1);
viewpagerAdapter.addItem(1, new Fragment(...));
解决更新问题或java.util.ConcurrentModificationException 都会很棒。谢谢你的帮助:)
【问题讨论】:
-
你好。你能找到解决这个问题的方法吗?我有完全相同的问题,但找不到任何适合我的解决方案:(如果你有什么可行的方法请帮忙!谢谢:)
-
不,我也没有解决问题。
标签: java android facebook android-fragments android-viewpager