Islam Mansour
Islam Mansour

Reputation: 390

How can I add sub-tabs to tab content using mvvmcross

I am working on an Activity that has vertical tabs and one of those tabs consists of horizontal tabs too. When I am tried to do it, I got class cast exception because tab content should inherit MvxFragment and I made it inherit MvxTabsFragmentActivity. Here's the code of the Activity:

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

}

And here is the "Favourite" class (The Tab Fragment Activity):

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

So How can I put tabs in a tab content?

Upvotes: 3

Views: 762

Answers (1)

Stuart
Stuart

Reputation: 66882

Fragments are covered in http://slodge.blogspot.co.uk/2013/06/n26-fragments-n1-days-of-mvvmcross.html

Showing fragments within Tabs is shown in https://github.com/slodge/MvvmCross-Tutorials/tree/master/Fragments

If your UX needs tabs-within-a-fragment then:

  • this isn't a scenario that mvvmCross supports out of the box (it's not a scenario I've seen before)
  • you'll not be able to use an Activity as the base for your tabhost fragment.
  • instead, you'll need to work out a way to show tabs within a fragment. The tab hosting code isn't that long - see MvxTabsFragmentActivity.cs - I guess you should be able to transplant this code into your own specialized fragment - but this will take a little work, just as it would without MvvmCross.

Upvotes: 5

Related Questions