FragmentPagerAdapter 没有 return 来自 getItem 的正确视图
FragmentPagerAdapter does not return the correct view from getItem
首先,我有一个片段列表
icons.add(new Home()));
icons.add(new NewsFragment()));
for (int i=0; i<gs.pages.size(); i++) {
SchoolPg page = gs.pages.get(i);
if (page.page_parent_id.equals("0")) {
icons.add(new PageFragment());
}
}
icons.add(new InfoFragment());
如您所见,第一个是主页,然后是新闻片段,然后是页面片段列表,最后一个是信息片段。
问题是,在 get Item 中,当我更改到 view pager position 1 时,应该是 News Fragment ,但它转到了 Page Fragment ,为什么以及如何解决它?谢谢
public class SampleFragmentPagerAdapter extends FragmentPagerAdapter {
public SampleFragmentPagerAdapter(FragmentManager fm, Context context) {
super(fm);
}
@Override
public int getCount() {
return icons.size();
}
@Override
public Fragment getItem(int position) {
return icons.get(position).frag;
}
@Override
public CharSequence getPageTitle(int position) {
return null;
}
}
更新:
如果我 select 位置 2 和 select 位置 1 ,它工作,
但是,如果我 select 除了 select 1 之外的其他位置,它会失败
找到了 运行 两次
当我点击位置 1 时,
它首先 运行 位置 1 - 打开 NewsFragment
但同时 运行 位置 2 - 打开 PageFragment
你的Fragment
会这样排列:
位置0: NewsFragment
位置1: PageFragment
。
.
.
.
位置(n-2): PageFragment
位置(n-1): InfoFragment
其中 n = icons.size();
像 icons
这样的数组仍然从索引 0 开始排序,这是 C
时代的遗物。希望你知道!
首先,我有一个片段列表
icons.add(new Home()));
icons.add(new NewsFragment()));
for (int i=0; i<gs.pages.size(); i++) {
SchoolPg page = gs.pages.get(i);
if (page.page_parent_id.equals("0")) {
icons.add(new PageFragment());
}
}
icons.add(new InfoFragment());
如您所见,第一个是主页,然后是新闻片段,然后是页面片段列表,最后一个是信息片段。
问题是,在 get Item 中,当我更改到 view pager position 1 时,应该是 News Fragment ,但它转到了 Page Fragment ,为什么以及如何解决它?谢谢
public class SampleFragmentPagerAdapter extends FragmentPagerAdapter {
public SampleFragmentPagerAdapter(FragmentManager fm, Context context) {
super(fm);
}
@Override
public int getCount() {
return icons.size();
}
@Override
public Fragment getItem(int position) {
return icons.get(position).frag;
}
@Override
public CharSequence getPageTitle(int position) {
return null;
}
}
更新:
如果我 select 位置 2 和 select 位置 1 ,它工作, 但是,如果我 select 除了 select 1 之外的其他位置,它会失败
找到了 运行 两次
当我点击位置 1 时, 它首先 运行 位置 1 - 打开 NewsFragment 但同时 运行 位置 2 - 打开 PageFragment
你的Fragment
会这样排列:
位置0: NewsFragment
位置1: PageFragment
。 . . .
位置(n-2): PageFragment
位置(n-1): InfoFragment
其中 n = icons.size();
像 icons
这样的数组仍然从索引 0 开始排序,这是 C
时代的遗物。希望你知道!