viewpager复制中片段内的编程片段

时间:2014-08-28 11:15:43

标签: android android-fragments android-viewpager

我有一个非常简单的ToDo列表应用程序,其中包含用户可以添加项目的多个类别。架构看起来像这样:

http://i.imgur.com/WA3dtcU.png

我正在使用ViewPager,每个视图都是我在ViewPagerAdapater中实例化的片段:

public Fragment getItem(int i) {
    ToDoCategoryModel cat = categories().get(i);
    ToDoCategoryView view = ToDoCategoryView.newInstance(cat);
    return view;
}

在这些类别中,用户可以将新的项目碎片添加到线性布局中。

虽然发生了一件非常奇怪的事情。我从类别1(C1)开始,目前列表中有1个项目。然后滚动到C2然后再次滚动到C3。然后我滚回到C2。 ViewPager要求我的ViewPagerAdapter重新创建C1,因为它在滚动2页之后就被销毁了。这很好,我只是创建一个全新的片段(如上面的代码所示)。但是,当我现在滚动回C1时,而不是显示1个项目(如您所料),显示了2个项目。它们是彼此重复的。

我用来将Item片段添加到Category片段的代码是:

public void addToDoItem(ToDoItemModel model) {
    ToDoItemView newItem = ToDoItemView.newInstance(model, this);
    getChildFragmentManager().beginTransaction().add(_linearLayout_items.getId(), newItem, "sameTag"+count++).commit();
}

如果我更改此代码以添加新的TextView而不是片段:

public void addToDoItem(ToDoItemModel model) {
    ToDoItemView newItem = ToDoItemView.newInstance(model, this);
    TextView tv = new TextView(getActivity());
    tv.setText(newItem.getModel().getName());
    _linearLayout_items.addView(tv);
}

工作正常!没有显示重复的项目。

那么在视图寻呼机中使用子片段管理器动态添加片段有什么问题?

感谢。

0 个答案:

没有答案