FragmentTabHost FragmentManager无效

时间:2018-02-23 21:45:07

标签: android xamarin fragment-tab-host

我在visual studio中使用xamarin.android开发应用程序,我试图在我的应用程序的底部添加Tabs 这是我的代码

protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);                      

        SetContentView(Resource.Layout.Main);


        FragmentTabHost fragmentTabHost = (FragmentTabHost)FindViewById(Resource.Id.tabhost);
        fragmentTabHost.Setup(this, FragmentManager, Resource.Id.tabcontent);
    }

然后我收到此错误

  

无法转换为' Android.App.FragmentManager'到' Android.Support.V4.App.FragmentManager'

当我改变这个

fragmentTabHost.Setup(this, FragmentManager, Resource.Id.tabcontent);

到此

fragmentTabHost.Setup(this, Android.Support.V4.App.FragmentManager, Resource.Id.tabcontent);

我收到此错误

  

' FragmentManager'是一种类型,在给定的上下文中无效

我已经坚持了一段时间,感谢任何帮助

编辑:
当我尝试添加带有此代码的标签

fragmentTabHost.AddTab(fragmentTabHost.NewTabSpec("fragmenta").SetIndicator("Fragment A"), new SubsFragment(), null);

我收到此错误

  

无法将片段转换为java.Lang.class

任何建议都是好的

1 个答案:

答案 0 :(得分:1)

更改

fragmentTabHost.Setup(this, FragmentManager, Resource.Id.tabcontent);

fragmentTabHost.Setup(this, this.SupportingFragmentManager, Resource.Id.tabcontent);

编译器期望FragmentManager的支持版本,您需要指定它。只是放Android.Support.V4.App.FragmentManager不起作用,因为这是一个类的名称,并且它期望一个实例化的 type Android.Support.V4.App.FragmentManager对象。

另一件重要的事情是,如果您查看代码this.SupportingFragmentManager,您会注意到正在使用的关键字this。如果您从this.SupportingFragmentManager呼叫FragmentActivity,则代码将按原样运行,否则请获取对FragmentActivity的引用并在其上调用SupportingFragmentManager。像这样:

fragmentTabHost.Setup(this, myFragmentActivity.SupportingFragmentManager, Resource.Id.tabcontent);

希望这有帮助。