我有一个TabLayout,每个标签中都有一个片段。第一个选项卡是片段实例,下一个选项卡具有相同片段的实例:
adapter.addFragment(fragmentoFichaSerie.newInstance(ficha, cookie), "Ficha");
for (HTMLParser.temporada objTemporada : ficha.temporadas)
{
adapter.addFragment(fragmentoCapitulos.newInstance(objTemporada.capitulos, cookie), objTemporada.nombre);
}
“ficha.temporadas”包含“n”“capitulos”数组。每个片段都会收到一个“capitulos”数组。
fragmentoCapitulos包含一个RecyclerView,我用对象的ArrayList填充(每个项从一个数组的位置获取其数据)。
在片段中,我在“newInstance”方法中接收数组,并将其与putParcelableArrayList放在一个包中。
public static fragmentoCapitulos newInstance(List<HTMLParser.capitulo> capitulos, String Cookie) {
fragmentoCapitulos fragment = new fragmentoCapitulos();
Bundle args = new Bundle();
args.putParcelableArrayList("capitulos", (ArrayList<HTMLParser.capitulo>) capitulos);
fragment.setArguments(args);
cookie = Cookie;
return fragment;
}
在onCreateView中,我获得了包的内容:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.capitulos, container, false);
RecyclerView recycler = (RecyclerView) view.findViewById(R.id.recCapitulos);
TextView empty = (TextView) view.findViewById(R.id.empty);
ImageView imgEmpty = (ImageView) view.findViewById(R.id.imgEmpty);
ArrayList<HTMLParser.capitulo> capitulos;
capitulos = getArguments().getParcelableArrayList("capitulos");
我的问题是如果我在标签2中,我应该收到第一个“ficha.temporadas”数组,但我收到第二个数组(第一个标签包含另一个不需要任何数组的片段)。 / p>
我尝试将void数组传递给第一个选项卡但不起作用。如何将正确的数组传递给每个片段?
答案 0 :(得分:0)
最后我找到了解决方案。我错了问题,而不是一个可以解决的错误。
当viewpager动态创建页面时,总是在当前页面的两侧生成页面。这样做不正确。在调试了大量时间并阅读了大量文章后,我通过FragmentStatePagerAdapter更改了FragmentPagerAdapter并且一切正常。
我希望这对有同样问题的人有所帮助。