xamarin.android之如何使用 mvvmcross 将子选项卡添加到选项卡内容
哈哈
阅读:52
2024-11-01 17:39:52
评论:0
我正在处理一个具有垂直选项卡的事件,其中一个选项卡也包含水平选项卡。当我尝试这样做时,我得到了类转换异常,因为选项卡内容应该继承 MvxFragment,而我让它继承 MvxTabsFragmentActivity。这是事件的代码:
using Android.App;
using Android.OS;
using Android.Views;
using Cirrious.MvvmCross.Droid.Fragging;
using Cirrious.MvvmCross.Droid.Views;
using Xyz.Yzx.ViewModels;
namespace Xyz.Yzx.Core.Views
{
[Activity(Label = "View for FirstViewModel",MainLauncher = true)]
public class FirstView : MvxTabsFragmentActivity
{
public FirstViewModel FirstViewModel
{
get { return (FirstViewModel)base.ViewModel; }
}
public FirstView()
: base(Resource.Layout.ClassMate_Page, Resource.Id.actualtabcontent)
{
}
protected override void AddTabs(Bundle args)
{
AddTab<Favourite>("Tab2", "Tab 2", args, FirstViewModel.MainViewModel);
// note that
}
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.Main, menu);
return true;
}
}
}
这是“收藏夹”类(选项卡片段事件):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Cirrious.MvvmCross.Droid.Fragging.Fragments;
namespace Xyz.Core.Views
{
public class Favourite : MvxTabsFragmentActivity
{
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.Inflate(Resource.Layout.device_view, container, false);
}
}
}
那么如何将标签放在标签内容中呢?
请您参考如下方法:
碎片包含在http://slodge.blogspot.co.uk/2013/06/n26-fragments-n1-days-of-mvvmcross.html中
在选项卡中显示片段显示在 https://github.com/slodge/MvvmCross-Tutorials/tree/master/Fragments 中
如果您的用户体验需要片段内的选项卡,那么:
- 这不是 mvvmCross 开箱即用支持的场景(这不是我以前见过的场景)
- 您将无法使用
Activity
作为您的 tabhost 片段的基础。 - 相反,您需要找到一种在片段中显示选项卡的方法。选项卡托管代码没有那么长 - 请参阅 MvxTabsFragmentActivity.cs - 我想您应该能够将此代码移植到您自己的专用片段中 - 但这需要一些工作,就像没有 MvvmCross 一样。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。