The Millionaire Mindset When You Create Products... and Not Only Digital Ones!

This is mainly written for me to record stuffs.

But to begin the article, I need to tell you a very short story about a mobile developer. His AMA on reddit is: https://www.reddit.com/r/IAmA/comments/68pck7/im_that_multimillionaire_app_developer_who/ .

To make the story short, he writes mobile apps for a living. His overall strategy is.. pretty simple.

1. Look for trending apps. See what kind of apps people are downloading.

2. Make apps similar to the trending apps.

3. Make it free with upgrades. Either no ads / more features.

4. Rinse and repeat.

He did it for a while until he reached $600/day. Then he made the police scanner app which pretty much made him a millionaire.

If you want the 'secret' to being rich, that's basically it. Just look whatever people are downloading, make them, and boom, rich. In fact, this pretty much holds true ever since the dawn of time. Just replace downloading with any verb of that time. Buying, digging (gold rush), planting (agriculture), eating (food industry), watching (movie industry), etc. The principal is totally the same at any point of time, at any place.

So.. What's the problem with Venture?

Here's the problem. Venture made lots and lots of products that you have never heard, which I won't touch in this article. Pretty much all of them are misses, misses that are allllll avoidable if Venture had the right mindset. But even when Venture do things wrong (IMO), Venture finally made a hit with OfficeCentral, which hit all the right principals of a selling product, which managed to take advantage of the most opportune time (GST introduction in Malaysia), of which was reached purely through trial and error and countless number head-banging on the wall.

See, the good thing is, when you persevere long enough, you'll eventually hit something. So, "never give up" is, always was, and will always be, the all-time 'truth' that everybody should follow.

But the bad thing is, if you don't understand the fundamentals, you're bound to repeat the same mistakes you made all over again with your 'hit', and this is the bug that keeps OfficeCentral from hitting its full potential.

Now, OfficeCentral was, in its baby-form, was a HRMS system only. It was a small but focused product.

Then some client said they want Payroll, so boom Payroll was added. The point was, Venture wants to say: "See, if you buy our Payroll, you get HRMS too!".

Then a contract comes in for an Accounting system, then booom Accounting is added. The intention is the same: "See, if you buy our Accounting, you get Payroll AND HRMS too."

This goes on and on until OfficeCentral reaches this current form.

Now, see what the problem is? Try comparing OfficeCentral's model to the millionaire mobile app developer model.

Now, the millionaire looked for something that people are downloading, then build it to get them to download it.

Whereas, Venture just added stuffs so that they have more points to say to people when they sell.

This difference leads to a totally different software experience.

Since the millionaire build the apps especially to get people who are interested in that kind of apps to download his one instead, lots of the focus goes towards tailoring the app towards new users. That means:

Quick sign in / No logins at all
The app does only what the new users want, nothing more, nothing less.
And it does the only thing it does very, very well.
And this reflects in his apps. Police scanner? Yup, it scans for police. Upgrade for no ads / better scanning capabilities. That's it. It doesn't try to be more than it has to be.

Compare that to OfficeCentral. OfficeCentral adds features so that, rather than to get new users, is to have more talking points to its current (mostly offline) marketing channels.

This results in apps that are not geared to get new customers at all and the resulting experience is pretty bad for any new users or anyone who found OfficeCentral from Play Store. Only current OfficeCentral users can take advantage of it.

Example: OfficeCentral Staff Mobile. Nobody searches the Play Store to apply for leave. Hence this app does not provide any new customers, only pleasing the current customers, hence under the millionaire's mindset, OfficeCentral Staff Mobile makes no sense.

Second Example: OfficeCentral POS. If by divine intervention a new user finds OfficeCentral POS, they'll immediately be greeted by a login page. With nowhere to register. This totally makes sense for OfficeCentral because the app is made not to get new users but to please the existing ones. But this totally makes no sense if we use the millionaire's mindset.

Third example: The whole of OfficeCentral itself. Since each feature is added so that there's more talking point, rather than focusing on new user experience, the focus was on adding as much feature as possible. This resulted in very heavy configuration required for any new users to OfficeCentral, with very little focus on new user experience.

For example, let's say someone buys OfficeCentral for the CRM. But when he registers, rather than immediately going to the CRM part, he was greeted by Home the dashboard, which has like 100 links on the page. He'll need to find the CRM link at the top of the page, and click one of the Account, Leads, Invoicing dropdowns before he sees anything else. So, someone wanting to give OfficeCentral a try, will quickly be confused and ultimately exit OfficeCentral and look for a simpler one, even though OfficeCentral, once mastered, is totally better.

As much as Venture say that we have divided it as logically as possible, even having 7 links on a page is confusing as it is, especially to new guys. This was offset by providing training to new users, but frankly, it is at best just a duct tape on a broken wall.

There are more examples, not only limited to software side, since Venture have this "add it so we have more talking point" mindset: Online payment is confusing. Marketing OfficeCentral becomes "we have this and we also have that". Take everything. Configuration nightmare. Events not working as intended. Support problems.

However, this can ultimately be solved by switching our mindset from "add it so we have more talking point" to the millionaire mindset "we create new product so we get new customer". Once we switch our mindset to the millionaire mindset, every single design we have will naturally follow through.

Now, for example, OfficeCentral POS. With the millionaire mindset in mind, how will you design the app?

Currently, people who finds the app in Play Store opens the app. Cannot login. Then he must open OfficeCentral.com.my. Register in the website. Then open it inside the mobile again. Log in. Then realises you need to add product. Then open website again, add product (pricebook in the system). Then go to POS again. THEN he's good to go.

Here's a simple diagram:

Open App -> Go to OfficeCentral.com.my -> Register -> Login -> Configure Wizard -> Click CRM Pricebook -> Add pricebook -> Return to App -> Start Session

See how horrible it is for any new users to get started? Most will probably drop at the second step.

Now, let's apply the millionaire mindset. Remember, the mindset is "we create new product so we get new customer". How will you approach the design?

By design, I mean just try to think the screens that the user will see. If it's a web app, then a page. Try to list down each screen user will see by chronology from a new user download, open the app, until he can get it up and running.

So, how will you design it?

You want a new user to be able to use it, so you must allow registration. And he needs to be able to use the POS as quickly as possible, without any configuration.

Hence, the design will naturally become like this

Open app -> Register / Login -> POS Cash Register interface.

If it's possible, we should even skip the register phase. Hence:

Open app -> POS Cash Register interface.

That's it! That's your new design. By changing and be aware of your mindset, you will naturally come to this conclusion on your own. Of course, your designs will then be constrained by technical limitations, but this is the correct way to approach when designing any new app, or actually any new product, doesn't matter whether it's digital or not.

Example of very good design: https://squareup.com/pos . It's basically 3 steps:

Open app -> Register / Login -> POS Cash Register interface.

...and they try to make registering as easy as possible by prefilling everything for you, except for the password.

Now with this new millionaire mindset approach, you can start transforming the way you design your business or marketing strategy as well. Remember, this millionaire mindset approach isn't limited to only mobile app design. This approach is universal.

Let's take another example. OfficeCentral CRM. Currently it's the same design as OfficeCentral Staff:

Open App -> Open OfficeCentral.com.my -> Register -> Click CRM -> Find configurations and configure it -> Open App again -> Add Leads, Contacts, Accounts -> Then you can add quotations, invoices etc.

How will you approach this? Remember, "we create new product so we get new customer".

Now, one of the most important tenets of this millionaire mindset is to create something that people are currently downloading or will be downloading. The only way to find this out is by research. And by research, you either simply look at the trend and follow the winners, or actually understand what's going on in a person's mind.

I'm going to share with you another nugget.

When users complain something isn't right, something definitely isn't right. However, when an user recommends how to fix it, the user is wrong.

Simply, users know when something isn't right and they are usually correct. However, the users are not experts at fixing it. The expert is you. So you, yourself need to understand the heart of the user and do something to fulfill the user's expectations.

How does this wind up with OfficeCentral CRM? Now, when people looks up for CRM on mobile, they are not looking for the whole CRM she-bang. They're not looking forward to inputting leads, accounts, or dissecting graphs and whole data on their mobile.

They are only looking to: Immediately issue quotation to a potential client when they're meeting at Starbucks.

Right now they need to return home, fire up MS Word, copy and paste, change names, etc and THEN email to their potential client. This is very leceh and a waste of time for both him and the potential client, hence reducing the opportunity to close the sale.

THAT's the only thing they need. For the whole analytical side, they'd rather open it on a big screen at a computer with Excel on the side so they can analyze their own sales data.

So, with that knowledge + the millionaire mindset, what will you do?

Here's what I will do:

Rather than OfficeCentral CRM, it should be cut down to OfficeCentral Invoicing, because people are looking to invoice their client when they use the app, not to do analysis. Less is more. This hugely simplifies our app design:

Open -> Register/Login -> Invoicing choice (Quote, Invoice) -> Quoting process -> Email

Simple, isn't it? Once the user downloads the app, he can immediately invoice a client. No more, no less.

And no, this does not only apply to mobile app design. Like I said, the millionaire mindset is universal.

Now let's go to the whole OfficeCentral online and offline marketing. Here's pretty much the flow of how things happen:

Offline:
Find a group of entrepreneurs/business -> Marketing people say OfficeCentral have everything -> Some people buy because it has something he wants -> Register free trial and login -> Cannot understand how to do what he wants -> Contact marketing people -> Demo -> Buy

Online:
Generic OfficeCentral.com.my -> Send everything there -> Register free trial -> Don't understand -> Contact marketing people -> Demo -> Buy
In short, it's basically "Yup, we have what you want. If buy ours you get others too!".

What if you apply the millionaire mindset?

Now things are different.

Rather than saying "OfficeCentral have everything you need", it becomes "Hey, you need point of sale? Yup, we have the best goddamn POS on the planet. And it's integrated with everything else as well!".

With this mindset, the whole marketing strategy becomes something else. Rather than OfficeCentral, you have CRM. You have HRMS. You have Payroll. You have Accounting. This translates to a different methodology

General if we sell POS:
Find a group of shops with no POS -> Sell POS to them -> They login and can immediately use it
Online if we sell accounting:
Create a website about Accounting -> Talk about OfficeCentral Accounting -> They login and can immediately use it.
This mindset also will change the approach to new people being registered into OfficeCentral as well. If people are interested in OfficeCentral to use her CRM, when they register they should immediately see CRM.

This also totally changes the billing methodology as well. "We create new product so we get new customer" is also "We create new product so we get money".

For example, Payroll. Under the current billing structure, its limited to per user per month billing. However, that billing system does not make any sense for a Payroll system. Why?

Because a Payroll administrator can might as well be one user only, because the system is supposed to generate payroll as automatically as possible, doesn't matter if it's a company with 1 employee, or 1000 employee. However, the difference between levels of company is that a small company may only generate salary slip for 1 employee, a bigger company may generate for 1000 employees.

Hence, the only one that makes sense under the millionaire mindset is: Charge based on the number of salary slips being generated.

This also applies for Accounting. The administrator might as well be one, but the difference between small and big is, the number of transactions recorded. So the billing should be based on number of transactions, not number of users.

Of course, there are real world constraints that Venture need to follow, but by following the millionaire mindset, we will actually approach problems and tackle new challenges with the correct method and mindset.

Hence, the millionaire mindset, "We create new product so we get new customer" is, IMO, how Venture should base their strategy on for years to come. This will fix a lot of mistakes and provide a good framework for each of Venturians to make decisions on.

 

From Zero to Can-lah: Xamarin + MVVMCross 5 Tutorial: Part 2: Hello World

Alright, so we're going to start with a very simple Hello World application, accessible on Android, iOS and UWP.

Create New Project

Create a new Class Library (Portable) project. If you can't find it, search for it in the Search textbox. Name it HelloWorld.Core .

You will be greeted with this dialog:

Just select all and select OK.

Awesome! Now go and delete Class1.cs. As per MVVMCross' TipCalc tutorial, ain't nobody need it ;)

Install MVVMCross

Now, we are going to install MVVMCross in our class library. Open Package Manager Console and type:

Install-Package MvvmCross

Add App Class

Now we'll need to add an App class. This class will handle interfaces, implementations and viewmodel registrations.

For now, create a new App.cs class at the root project and add this code:

using HelloWorld.Core.ViewModels;
using MvvmCross.Core.ViewModels;
using MvvmCross.Platform;

namespace HelloWorld.Core
{
    public class App : MvxApplication
    {
        public App()
        {
            Mvx.RegisterSingleton<IMvxAppStart>(new MvxAppStart<HomeViewModel>());
        }
    }
}

It's okay if you have an error at the HomeViewModel line, we're going to add that next.

Add HomeViewModel

A ViewModel represents a screen or a page inside our app. So, let's add one viewmodel and name it HomeViewModel. Add a folder named ViewModels and add a HomeViewModel.cs class inside.

using MvvmCross.Core.ViewModels;

namespace HelloWorld.Core.ViewModels
{
    public class HomeViewModel : MvxViewModel
    {

    }
}

...This should be enough.

Now, refer to the App.cs class again. The line ...

Mvx.RegisterSingleton<IMvxAppStart>(new MvxAppStart<HomeViewModel>());

... simply means that we set the class HomeViewModel as the first screen/view model our app will start with.

Your file structure will look like this:

Alright! We're done with the portable class library. Easy ain't it? Let's move on to the UWP implementation.

From Zero to Can-lah: Xamarin + MVVMCross 5 Tutorial: Part 1: Getting Started

Alright, so I'm going to write down a tutorial about how to start using Xamarin and MVVMCross.

One of the gripes I had with MVVMCross was that the documentation on their website is old (well, at least at the time of writing) hence for newer versions, you had to dig through the net until you found and try them until it works. Now, the older videos are very helpful (especially the N+1 videos, thank you!) but as a beginner I found it hard to use because of the changes in namespaces and also some 'deprecated' methods, for example creating tabs in Android. However, once I got my head around MVVMCross, the N+1 videos is an absolute goldmine.

Even worst is that since you're new to the mobile and xamarin world, you absolutely don't know which advice is the correct or the most recent one, or even worse is that you may have found the most recent one, but you just can't get it to work because you didn't know there's a small change in Setup.cs that you needed to do, but there's no way you can know that unless you're already well-versed in MVVMCross in the first place.

This will mostly be for myself so that I can refer back to refresh my memory, and also possibly for my co-workers and friends and others who are interested in starting with Xamarin and MVVMCross but are scared by the prospect of it.

First of all, useful links are:

MVVMCross website: http://mvvmcross.com
Their Github: https://github.com/MvvmCross/MvvmCross
N+1 Tutorial: https://mvvmcross.wordpress.com/
Beginner TipCalc Tutorial: https://www.mvvmcross.com/documentation/tipcalc-tutorial/the-tip-calc-tutorial

This tutorial assumes that:

  1. You never did any mobile development
  2. You know C# (It's fine if you only know VB.NET, it's pretty much the same thing)
  3. Nuget and stuffs
  4. .... Yeah that's it I guess. I'll try to walk y'all through the gotchas as much as possible.
  5. ...And I won't focus much on any non-mobile parts (such as accessing the web service) though there may be examples of them inside.

Some Gotchas

This tutorial simplifies/skips some explanations during the early parts (HelloWorld and TipCalc) so that the readers can focus and getting it to work first. I've added a small notes at the end of the tutorial explaining a bit about the skipped parts and will go more in-depth when we reach the final tutorial (Apps with Tabs).

What you should be able to do after this tutorial:

1. A whole, real-world Xamarin application that is deployable on Android, iOS and Universal Windows Platform (UWP), ready to be published to their respective stores.

What we're going to make

 We're going to create a total of 2 apps.

1. A HelloWorld app, which will be extended to become the TipCalc tutorial, but in more detail / more hand-holding.
2. A full application which can be Scrolled and Tabs as the main navigation method.

What you need to start with Xamarin and this tutorial

0. We're using MVVMCross 5.0
1. Visual Studio 2017 Community Edition - Download here
2. A Mac (updated to 10.12 Sierra). Yup, you heard me right. A Mac. So go out there and buy/borrow/steal/beg from your boss for one. You can also skip the iOS part if you don't have a Mac, no problem. This tutorial was written with the macOS version 10.12 Sierra.
3. An Android phone, an iPhone and a Windows phone (optional, unless you're okay with using simulators).
4. A punching bag. So that you have something to punch when you inevitably left something out and wonder why something doesn't work.

So, I have everything ready. Give it to me!

Hell yeah, let's go! Click here.

 

 

How to make an iOS page with tabbed view

How to make an iOS page with tabbed view - MVVMCross 4.4.

1. Get the MVVMCross iOS Support package via nuget

2. Override the FinishedLaunching() in AppDelegate class and set the presenter as MvxTabsViewPresenter:

public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
	// ...
	var presenter = new MvxTabsViewPresenter(this, this.Window);
	var setup = new Setup(this, presenter);
	setup.Initialize();
 
	Mvx.Resolve<IMvxAppStart>().Start();
 
	Window.MakeKeyAndVisible();
 
	return true;
}

3. Set the main page (the one with tabs)

[MvxTabPresentation(MvxTabPresentationMode.Root)]
public class MyRootView : MvxBaseTabBarViewController<MyRootViewModel>
{
	// ...
}

4. Create the page inside the tab

[MvxTabPresentation(MvxTabPresentationMode.Tab, "Tab 1", "home", true)]
public class SomeView : MvxViewController<SomeViewModel>
{
	// some code
}

Reference and more info at http://nmilcoff.com/2016/10/16/tabs-presenter-for-mvvmcross/

 

Just want to save this somewhere

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">

  <android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
        >

    <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical">

      <TextView
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:textSize="40dp"
          android:text="From" />

      <Mvx.MvxSpinner
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:textSize="40dp"
           local:MvxBind="ItemsSource FromLocations"
           local:MvxItemTemplate="@layout/mvxspinner_itemtemplate_location"
           local:MvxDropDownItemTemplate="@layout/mvxspinner_dropdownitemtemplate_location"
  ></Mvx.MvxSpinner>

      <TextView
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:textSize="40dp"
          android:text="To" />

      <Mvx.MvxSpinner
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:textSize="40dp"
           local:MvxBind="ItemsSource ToLocations"
           local:MvxItemTemplate="@layout/mvxspinner_itemtemplate_location"
           local:MvxDropDownItemTemplate="@layout/mvxspinner_dropdownitemtemplate_location"
     ></Mvx.MvxSpinner>

      <TextView
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:textSize="40dp"
          android:text="Helicopter" />

      <Mvx.MvxSpinner
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:textSize="40dp"
           local:MvxBind="ItemsSource Helicopters"
           local:MvxItemTemplate="@layout/mvxspinner_itemtemplate_location"
           local:MvxDropDownItemTemplate="@layout/mvxspinner_dropdownitemtemplate_location"
     ></Mvx.MvxSpinner>

      <TextView
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:textSize="40dp"
          android:text="Price" />

      <TextView
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:textSize="40dp"
          android:text="RM 0.00" />

      <Button xmlns:a="http://schemas.android.com/tools"
          android:text="Book Now!"
          android:textSize="40dp"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          local:MvxBind="Click BookButton_Clicked"
          android:id="@+id/button1" />

      <!--<EditText
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:textSize="40dp"
      local:MvxBind="Text Hello" />
  
  <Button xmlns:a="http://schemas.android.com/tools"
      android:text="Meow"
      android:textSize="40dp"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      local:MvxBind="Click GoToChallengesClicked"
      android:id="@+id/button1" />
  
  <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:textSize="40dp"
      local:MvxBind="Text Hello" />-->

    </LinearLayout>
  </android.support.v4.widget.NestedScrollView>

  <android.support.design.widget.AppBarLayout
     android:id="@+id/appbar"
     android:layout_width="match_parent"
     android:layout_height="wrap_content">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        local:layout_scrollFlags="scroll|enterAlways">


      <Button
        android:layout_width="wrap_content"
        android:layout_height="?attr/actionBarSize"
        android:text="Departure"
        android:layout_gravity="right"
        />

      <ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
        android:layout_gravity="right"
    android:src="@android:drawable/ic_menu_save"
    style="?android:attr/borderlessButtonStyle"
    />

    </android.support.v7.widget.Toolbar>

  </android.support.design.widget.AppBarLayout>

  <android.support.design.widget.FloatingActionButton
       android:id="@+id/fab"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="end|bottom"
       android:layout_margin="16dp"
       android:src="@android:drawable/ic_menu_save" />

</android.support.design.widget.CoordinatorLayout>

 

FrameLayout

https://code.tutsplus.com/tutorials/android-user-interface-design-frame-layouts--mobile-4877

 

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ImageView
        android:id="@+id/ImageView01"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:src="@drawable/lake"
        android:scaleType="matrix"></ImageView>
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#000"
        android:textSize="40dp"
        android:text="@string/top_text" />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/bottom_text"
        android:layout_gravity="bottom"
        android:gravity="right"
        android:textColor="#fff"
        android:textSize="50dp" />
</FrameLayout>

In the above example, the z-index for ImageView will be 0 (bottom), the first TextView is 1 (middle) and the second TextView is 2 (top).

CoordinatorLayout - Tabbed View - MVVMCross

Now how do you make a Tabbed View with MVVMCross?

  1. Take advantage of the CoordinatorLayout.
  2. Add tabs from code behind as fragments.
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
  <android.support.design.widget.AppBarLayout
      android:id="@+id/appbar"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        local:layout_scrollFlags="scroll|enterAlways" />
    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="16dp"
        local:tabGravity="center"
        local:tabMode="scrollable">
  
    </android.support.design.widget.TabLayout>
  </android.support.design.widget.AppBarLayout>
  <android.support.v4.view.ViewPager
      android:id="@+id/viewpager"
      android:layout_width="match_parent"
      android:layout_height="fill_parent"
      local:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
    [Activity(
           Label = "Cabar.Mobile.UI.Android"
           , Theme = "@style/MyTheme", ScreenOrientation = ScreenOrientation.Portrait)]
    //[Activity(Label = "Cabar.Mobile.UI.Android")]
    public class ChallengesTabbedView : MvxCachingFragmentCompatActivity<Core.ViewModels.ChallengesTabbedViewModel>
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.ChallengesTabbedView);

            var toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(toolbar);
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
            SupportActionBar.Title = "SampleTabs";
            
            var viewPager = FindViewById<ViewPager>(Resource.Id.viewpager);

            var fragments = new List<MvxCachingFragmentStatePagerAdapter.FragmentInfo>();
            fragments.Add(new MvxCachingFragmentStatePagerAdapter.FragmentInfo("Top", typeof(ChallengesTabbedTopView), ViewModel.ChallengesTabbedTopViewModel));
            fragments.Add(new MvxCachingFragmentStatePagerAdapter.FragmentInfo("My", typeof(ChallengesTabbedMyView), ViewModel.ChallengesTabbedMyViewModel));

            viewPager.Adapter = new MvxCachingFragmentStatePagerAdapter(this, SupportFragmentManager, fragments);

            ////If you want to start at specific tab
            ////viewPager.SetCurrentItem(ViewModel.CurrentPage, false);

            var tabLayout = FindViewById<TabLayout>(Resource.Id.tabs);
            tabLayout.SetupWithViewPager(viewPager);
        }

    }