2017-08-21 39 views
0

我想在兩個片段之間傳遞數據。我該怎麼做?如何在Xamarin中的片段之間傳遞數據?

此代碼給我一個錯誤:

片段1:

myips = myip.Text; 
mytracks = int.Parse(mytrack.Text); 

intent = new Intent(this.Activity, typeof(TabFragment2)); 

intent.PutExtra("MyData", myip.Text); 
intent.PutExtra("MyData1", mytrack.Text); 

片段2:

string myips = Activity.Intent.GetStringExtra("MyData"); 
int mytracks = int.Parse(Activity.Intent.GetStringExtra("MyData1")); 
+0

什麼是錯誤?看起來你在第一個片段上有一個拼寫錯誤,在那裏你說'mytrack'而不是'mytracks'(最後一行)。 – hankide

+0

@hankide System.ArgumentNullException:值不能爲空。 參數名稱:String >>>> int mytracks = int.Parse(Activity.Intent.GetStringExtra(「MyData1」)); – controleng

+0

https://developer.xamarin.com/guides/android/platform_features/fragments/fragments_walkthrough/part_1_-_walkthrough/ –

回答

0

intent = new Intent(this.Activity, typeof(TabFragment2));

Fragment是一塊AP的可以將放置在活動中,但不應使用此方法打開Fragment

打開TabFragment2這樣的:

var fragment = new TabFragment2(); 
// Execute a transaction, replacing any existing fragment with this one inside the frame. 
var fragmentTransaction = FragmentManager.BeginTransaction(); 
fragmentTransaction.Replace(Resource.Id.fragment, fragment); 
fragmentTransaction.Commit(); 

有關的信息,你可以閱讀document,這裏是一個example;當您打開Fragment2

I want to pass data between two fragments.

當您使用fragmentTransaction.Replace方法來打開你的TabFragment2,你可以傳遞數據這樣

Fragment2 fragment = new Fragment2(); 
Bundle args = new Bundle(); 
args.PutString("param", myip.Text); 
args.PutInt("paramInt", 12); 
fragment.Arguments = args; 

Fragment2,從Arguments得到的數據:

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
     View view = LayoutInflater.From(Activity).Inflate(Resource.Layout.fragment2, null); 
     if (Arguments != null) 
     { 
      String mParam1 = Arguments.GetString("param");  
      int mParam2 = Arguments.GetInt("paramInt"); 
     } 
    }