DiH
DiH

Reputation: 491

Passing values between tabs

I want to pass a value from my main activity in both of my tab-activities. Here is my code:

Main Activity:

  public class MainActivity : TabActivity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);
        CreateTab(typeof(test1), "Page1", "Page1");
        CreateTab(typeof(test2), "Page2", "Page2");

  var test = new Intent(this, typeof(test1));
        test.PutExtra("MyData", "Data from MainActivity");

  var test = new Intent(this, typeof(test2));
        test.PutExtra("MyData", "Data from MainActivity");

    }
    private void CreateTab(Type activityType, string tag, string label)
    {
        var intent = new Intent(this, activityType);
        intent.AddFlags(ActivityFlags.NewTask);

        var spec = TabHost.NewTabSpec(tag);

        spec.SetIndicator(label);
        spec.SetContent(intent);

        TabHost.AddTab(spec);
    }
}

And in both of my activities i'm trying this:

 TextView textview = new TextView(this);
 textview.Text = Intent.GetStringExtra("MyData");
 SetContentView(textview);

Unfortanetely i dont take any result.

Upvotes: 1

Views: 372

Answers (1)

DiH
DiH

Reputation: 491

I found a solution which works but i dont know if its the right way:

Main Activity:

public class MainActivity : TabActivity
{
 protected override void OnCreate(Bundle bundle)
   {
    base.OnCreate(bundle);


    SetContentView(Resource.Layout.Main);
    CreateTab(typeof(test1), "Page1", "Page1");
    CreateTab(typeof(test2), "Page2", "Page2");

    var prefs = Application.Context.GetSharedPreferences("MyApp", FileCreationMode.Private);
    var prefEditor = prefs.Edit();
    prefEditor.PutString("PrefName", "Some value");
    prefEditor.Commit();

}
private void CreateTab(Type activityType, string tag, string label)
{
    var intent = new Intent(this, activityType);
    intent.AddFlags(ActivityFlags.NewTask);

    var spec = TabHost.NewTabSpec(tag);

    spec.SetIndicator(label);
    spec.SetContent(intent);

    TabHost.AddTab(spec);
}

}

And into my activities

// Function called from OnCreate
SetContentView(Resource.Layout.test1);
var prefs = Application.Context.GetSharedPreferences("MyApp", FileCreationMode.Private);              
var somePref = prefs.GetString("PrefName", null);

Upvotes: 0

Related Questions