使用静态newInstance方法实例化片段覆盖先前的参数

时间:2018-03-15 12:09:51

标签: android

我正在尝试使用多个Fragment实现ViewPager并使用静态newInstance来实例化活动循环中的片段

for(String name : list) {          
  viewPagerAdapter.addFragment(ProductListFragment.newInstance(name), name);
        } 


 public static ProductListFragment newInstance(String category) {
    ProductListFragment fragment = new ProductListFragment();
    ProductListFragment.category = category;
    Bundle args = new Bundle();
    args.putString(CATEGORY_PARAM, category);
    fragment.setArguments(args);
    return fragment;
}

由于片段的生命周期仅在循环结束后才被调用,我无法保留我发送的参数值。 为了更好地理解,请考虑将有三个选项卡,在每个选项卡中,我将显示与“name”值相关的产品,并且我想使用片段中productList的“name”值来过滤这些产品。一旦第一个片段生命周期得到调用,我将获得“name”的最后一个值,因为我已经提到片段生命周期仅在循环结束后开始,这意味着我将过滤仅与“name”的最后一个值相关的产品,并且相同的产品将显示在所有三个选项卡中。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

不要尝试使用 AttributeError Traceback (most recent call last) ,应该在 ViewPagerAdapter.addFragment() 方法中创建片段。

如果你需要一个动态的 FragmentPagerAdapter,那么你可以这样做:

getItem()