52ky 发表于 2022-5-3 10:22:27

未调用 FragmentPagerAdapter getItem

问题
我无法在分片页面雷达中重用分片。 .使用 destroyItem() 方法,它正在删除片段,但仍然没有再次调用 getItem()。只有 2-3 个图像,所以我使用 FragmentPagerAdapter 而不是 FragmentStatePagerAdapter。 .

public class ExamplePagerAdapter extends FragmentPagerAdapter {

    ArrayList < String > urls;
    int size = 0;
    public ExamplePagerAdapter(FragmentManager fm, ArrayList < String > res) {
      super(fm);
      urls = res;
      size = urls.size();
    }

    @Override
    public int getCount() {
      if (urls == null) {
            return 0;
      } else {
            return size;
      }

    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      FragmentManager manager = ((Fragment) object).getFragmentManager();
      FragmentTransaction trans = manager.beginTransaction();
      trans.remove((Fragment) object);
      trans.commit();
    }

    @Override
    public Fragment getItem(int position) {

      Fragment fragment = new FloorPlanFragment();
      Bundle b = new Bundle();
      b.putInt("p", position);
      b.putString("image", urls.get(position));
      Log.i("image", "" + urls.get(position));
      fragment.setArguments(b);
      return fragment;
    }
}
在碎片化活动中,

pager.setAdapter(new ExamplePagerAdapter(getSupportFragmentManager(), res2));

回答
接吻答案:

只需使用 FragmentStatePagerAdapter 而不是 FragmentPagerAdapter。

我得到了答案。 .首先,我想删除这个问题,因为我犯了一个非常愚蠢的错误,但这个答案将帮助面临同样问题的人,而不是使用 FragmentPagerAdapter 。

正如评论中提到的@blackhatsumurai:

FragmentStatePagerAdapter

FragmentStatePagerAdapter



页: [1]
查看完整版本: 未调用 FragmentPagerAdapter getItem