我在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
任何建议都是好的
答案 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);
希望这有帮助。