返回视图时FragmentManager已经在执行事务
FragmentManager is already executing transactions when returning to view
我有一个视图,它有一个可以激活 viewpager 的 tablayout,在查看页面时它工作正常,但是如果我单击该视图上的一个项目然后返回到过去的屏幕,我得到:
Java.Lang.IllegalStateException: FragmentManager is already executing transactions
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
CurrentActivity = Activity;
var view = inflater.Inflate(Resource.Layout.fragment_directory, null);
_tabLayout = view.FindViewById<TabLayout>(Resource.Id.directory_tabs);
_viewPager = view.FindViewById<ViewPager>(Resource.Id.directory_pager);
SetTabLayout();
SetViewPager();
return view;
}
private void SetTabLayout()
{
var userTab = _tabLayout.NewTab();
userTab.SetText("Users");
var orgUnitsTab = _tabLayout.NewTab();
orgUnitsTab.SetText("Organizations");
_tabLayout.AddTab(userTab);
_tabLayout.AddTab(orgUnitsTab);
_tabLayout.TabGravity = TabLayout.GravityFill;
}
private void SetViewPager()
{
var pagerAdapter = new DirectoryPagerAdapter(FragmentManager, _tabLayout.TabCount);
_viewPager.Adapter = pagerAdapter;
_viewPager.AddOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(_tabLayout));
}
不确定这是否有影响,但是当我离开这个视图时,我从一个片段变成了一个 activity。
如果你遇到这个问题,我发现 SO Answer 回答得很好。
亮点,我应该用ChildFragmentManager
而不是FragmentManager
。
我有一个视图,它有一个可以激活 viewpager 的 tablayout,在查看页面时它工作正常,但是如果我单击该视图上的一个项目然后返回到过去的屏幕,我得到:
Java.Lang.IllegalStateException: FragmentManager is already executing transactions
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
CurrentActivity = Activity;
var view = inflater.Inflate(Resource.Layout.fragment_directory, null);
_tabLayout = view.FindViewById<TabLayout>(Resource.Id.directory_tabs);
_viewPager = view.FindViewById<ViewPager>(Resource.Id.directory_pager);
SetTabLayout();
SetViewPager();
return view;
}
private void SetTabLayout()
{
var userTab = _tabLayout.NewTab();
userTab.SetText("Users");
var orgUnitsTab = _tabLayout.NewTab();
orgUnitsTab.SetText("Organizations");
_tabLayout.AddTab(userTab);
_tabLayout.AddTab(orgUnitsTab);
_tabLayout.TabGravity = TabLayout.GravityFill;
}
private void SetViewPager()
{
var pagerAdapter = new DirectoryPagerAdapter(FragmentManager, _tabLayout.TabCount);
_viewPager.Adapter = pagerAdapter;
_viewPager.AddOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(_tabLayout));
}
不确定这是否有影响,但是当我离开这个视图时,我从一个片段变成了一个 activity。
如果你遇到这个问题,我发现 SO Answer 回答得很好。
亮点,我应该用ChildFragmentManager
而不是FragmentManager
。