2016-08-17 66 views
1

我想在我的兩個選項卡活動中傳遞我主要活動的值。這裏是我的代碼:在選項卡之間傳遞值

主要活動:

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

而且在我的兩個活動,我想要這個:

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

Unfortanetely我不採取任何結果。

回答

0

我發現了有效的解決方案,但我不知道它的正確方法:

主要活動:

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

}

而進入我的活動

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