重写两个方法:getItemId()  getItemPosition()。

  mHomePagerAdapter = new FragmentPagerAdapter(mChildFragmentManager) {
                @Override
                public int getCount() {
                    return mFragments.size();
                }

                @NonNull
                @Override
                public Fragment getItem(int position) {
                    return mFragments.get(position);
                }
                @Override
                public long getItemId(int position) {
                    return mFragments.get(position).hashCode();
                }

                @Override
                public int getItemPosition(@NonNull Object object) {
                    if (mFragments.contains(object)) {
                        // 如果当前 item 未被 remove,则返回 item 的真实 position
                        return mFragments.indexOf(object);
                    } else {
                        // 否则返回状态值 POSITION_NONE
                        return POSITION_NONE;
                    }
                }
            };

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐