Mono for Android UI Blueprint: Listing 7.

Coding for Tabs.

[Activity(Label = "Tabbed Activity", MainLauncher=true)]
public class Activity1 : TabActivity
{
  protected override void OnCreate(Bundle bundle)
  {
    base.OnCreate(bundle);

    SetContentView(Resource.Layout.Main);

    var res = this.Resources; // Resource object to get Drawables
    TabHost tabHost = this.TabHost; // The activity TabHost
    TabHost.TabSpec spec; // Resusable TabSpec for each tab
    Intent intent; // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent();
    var aa = new ArtistsActivity();
      
    intent.SetClass(this, aa.Class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.NewTabSpec("artists").SetIndicator("Artists",
      res.GetDrawable(Resource.Drawable.ic_tab_artists)).SetContent(intent);
    tabHost.AddTab(spec);

    // Do the same for the other tabs
    intent = new Intent().SetClass(this, (new AlbumActivity()).Class);
    spec = tabHost.NewTabSpec("albums").SetIndicator("Albums",
      res.GetDrawable(Resource.Drawable.ic_tab_albums))
    .SetContent(intent);
    tabHost.AddTab(spec);

    intent = new Intent().SetClass(this, (new SongActivity()).Class);
    spec = tabHost.NewTabSpec("songs").SetIndicator("Songs",
      res.GetDrawable(Resource.Drawable.ic_tab_songs))
    .SetContent(intent);
    tabHost.AddTab(spec);

    tabHost.CurrentTab = -1;
  }
}

About the Author

Wallace (Wally) B. McClure has authored books on iPhone programming with Mono/Monotouch, Android programming with Mono for Android, application architecture, ADO.NET, SQL Server and AJAX. He's a Microsoft MVP, an ASPInsider and a partner at Scalable Development Inc. He maintains a blog, and can be followed on Twitter.