【问题标题】:FragmentManager is already executing transactions viewpager2FragmentManager 已经在执行事务 viewpager2
【发布时间】:2020-12-02 09:00:27
【问题描述】:

我正在使用 4 个片段和视图寻呼机 2。 并突然得到这个错误。崩溃并不总是出现。我已经搜索了其他问题,但找不到有关 viewpager2 的任何解决方案。

crash report from mobile 无法获取完整图片

setUpViewPager()MainActivity

onStart() 调用它
public void setupViewPager() {
        MainActivityViewPager adapter = new MainActivityViewPager(getSupportFragmentManager(), getLifecycle());

        binding.viewpager.setUserInputEnabled(false);

        binding.viewpager.setOffscreenPageLimit(3);

        binding.viewpager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageSelected(int position) {
                if (prevMenuItem != null) {
                    prevMenuItem.setChecked(false);
                } else {
                    binding.bottomNavigation.getMenu().getItem(0).setChecked(false);
                }
                binding.bottomNavigation.getMenu().getItem(position).setChecked(true);
                prevMenuItem = binding.bottomNavigation.getMenu().getItem(position);
            }
        });

        binding.viewpager.setAdapter(adapter);
    }

MainActivityViewPager


public class MainActivityViewPager extends FragmentStateAdapter {


    public MainActivityViewPager(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
        super(fragmentManager, lifecycle);
    }

    @NonNull
    @Override
    public Fragment createFragment(int position) {
        switch (position) {
            case 0:
                return new HomeFragment();
            case 1:
                return new ProgressFragment();
            case 2:
                return new MoreFragment();
            case 3:
                return new ProfileFragment();
        }
        return null;
    }

    @Override
    public int getItemCount() {
        return 4;
    }

谁能给我一个解决方案?这目前正在生产应用程序中发生,我的头上有红色警报。 谢谢大家

【问题讨论】:

  • "突然出现这个错误。" - 哪个错误?发布堆栈跟踪
  • 我无法从 android studio 获取堆栈跟踪。但我设法从应用程序崩溃的手机获得了一份报告。请检查问题中的链接

标签: android fragmentmanager android-viewpager2


【解决方案1】:

根据日志,您的ViewPager 被放置在(嵌套?)Fragment 内,因此您应该使用getChildFragmentManager 而不是getSupportFragmentManager

【讨论】:

  • no viewpager 没有嵌套。我有 MainActivity,里面有 viewpager2 以及底部导航。
  • 我看错了方向。感谢您的回复
  • @NiazSagor 你找到解决方案了吗?我也有类似的问题,有点迷茫
  • @moyo 是的,上面的答案工作正常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多