gpt4 book ai didi

android - 无法为未附加到 FragmentManager 的 Fragment 设置MaxLifecycle : ViewPager

转载 作者:行者123 更新时间:2023-12-01 17:44:38 26 4
gpt4 key购买 nike

我尝试过很多给定的例子,但没有任何效果对我有用。当我尝试从 viewPager 动态删除页面时,出现异常:

无法为未附加到 FragmentManager 的 Fragment 设置MaxLifecycle

我的 PagerAdapter 如下:

public class MyPagerAdapter extends FragmentStatePagerAdapter {

private final Context mContext;
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
long baseId = 0;

public MyPagerAdapter(Context context, FragmentManager fm) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
mContext = context;
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}

@Override
public int getCount() {
return mFragmentList.size();
}

public void addFragment(Fragment fragment, String title, int position) {
mFragmentList.add(position, fragment);
mFragmentTitleList.add(position, title);
}

public void removeFragment(int position) {
mFragmentList.remove(position);
mFragmentTitleList.remove(position);
}

@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}

为了删除页面,我正在调用类似的方法

myPagerAdapter.removeFragment(viewPager.getCurrentItem());

我也尝试过下面给定的方法,但仍然遇到异常

@Override
public int getItemPosition (Object object) {
int index = mFragmentList.indexOf (object);
if (index == -1)
return POSITION_NONE;
else
return index;
}

最佳答案

尝试 Handler().post { myPagerAdapter.removeFragment(..) }

如果您出于某种原因在另一个线程上运行此方法,请确保改为使用 Handler(Looper.getMainLooper()).post { ... }

问题是您可能正在执行事务,而 ViewPager 本身正在处理动画或其自身的状态保存。执行上述操作可以让我们在执行事务之前完全运行 ViewPager 的状态保存。

我也遇到了同样的问题,这样做解决了我的问题。

具体来说,这是我在 onPageScrollStateChanged(..) 内部运行的代码(大概您也在做同样的事情)

        override fun onPageScrollStateChanged(state: Int) {
if (upcomingPage == 0 && state == ViewPager.SCROLL_STATE_IDLE) {
homePagerRoot?.post { vpAdapter.clearExtraFragments() }
}
}

关于android - 无法为未附加到 FragmentManager 的 Fragment 设置MaxLifecycle : ViewPager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57370162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com