返回视图时,FragmentManager已经在执行事务

时间:2019-04-16 20:59:39

标签: xamarin.android android-viewpager android-tablayout

我有一个视图,该视图具有可激活viewpager的选项卡布局,在查看页面时可以正常工作,但是如果我单击该视图上的某个项目,然后返回到上一个屏幕,则会得到:

  

Java.Lang.IllegalStateException:FragmentManager已经在执行事务

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));
}

不确定是否会有所作为,但是当我离开该视图时,我会从一个片段转到一个活动。

1 个答案:

答案 0 :(得分:1)

如果您遇到这个问题,我发现SO Answer回答得很好。

最重要的是,我应该使用ChildFragmentManager而不是FragmentManager