以编程方式在线性布局中多次添加片段

时间:2016-11-12 09:05:55

标签: android android-fragments android-linearlayout

我想在线性布局中多次添加片段。为此,我使用For循环并将数据传递给片段。每个索引都有不同的数据。我目前的问题是,我只能看到屏幕上的最后一个片段多次,可能是隐藏了顶部片段或任何其他原因。不明白是什么问题。

      categoryArrayList = dbHelper.getChannelInfo();
      fragmentManager =getSupportFragmentManager();
      ft = fragmentManager.beginTransaction();
      for (int i = 0; i<categoryArrayList.size(); i++) {

        SubFragment frag = new SubFragment();
          Bundle bundle = new Bundle();
        bundle.putInt("ID", (categoryArrayList.get(i).getChannelCategoryId()));
        bundle.putString("categoryName", categoryArrayList.get(i).getChannelName());
            frag.setArguments(bundle);
            ft.add(R.id.container, frag,"fragment"+i);
    }
    ft.commit();
}
}

的xml:

<LinearLayout
  android:id="@+id/container"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical"
  android:layout_marginTop="50dp"
  android:background="#252424"
  android:layout_below="@id/headercontainer"
  android:layout_marginLeft="30dp">

1 个答案:

答案 0 :(得分:1)

您为每个Bundle参数使用相同的Fragment,并且FragmentTransaction以异步方式发生,因此当它们最终执行时,{{1所有人都阅读相同的论点。

你可能在循环之前有类似的东西:

Fragment

Bundle bundle = new Bundle(); 来电之前,将其移至for循环内。