FragmentManager 已经在执行事务 viewpager2
FragmentManager is already executing transactions viewpager2
我在 view pager 2 中使用了 4 个片段。
突然得到这个错误。崩溃并不总是出现。我搜索了其他问题,但找不到有关 viewpager2 的任何解决方案。
crash report from mobile没能看全
setUpViewPager() 从 MainActivity[=13= 的 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;
}
任何人都可以建议我一个解决方案吗?这目前正在生产应用程序中发生,我的头上出现了红色警报。
谢谢大家
根据日志,您的 ViewPager
位于(嵌套?)Fragment
内,因此您应该使用 getChildFragmentManager
而不是 getSupportFragmentManager
我在 view pager 2 中使用了 4 个片段。 突然得到这个错误。崩溃并不总是出现。我搜索了其他问题,但找不到有关 viewpager2 的任何解决方案。
crash report from mobile没能看全
setUpViewPager() 从 MainActivity[=13= 的 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;
}
任何人都可以建议我一个解决方案吗?这目前正在生产应用程序中发生,我的头上出现了红色警报。 谢谢大家
根据日志,您的 ViewPager
位于(嵌套?)Fragment
内,因此您应该使用 getChildFragmentManager
而不是 getSupportFragmentManager