2017-06-19 83 views
0

我想從fragmentA中獲取數據到我的其他片段,即fragmentB。在我的fragmentA中有一個Edittext字段,當用戶點擊提交按鈕時,Edittext中的數據應該顯示在我的fragmentB中。我試圖遵循this link,但由於我是xamarin移動開發領域的新手,我無法找出答案。任何人都可以幫助我解決這個問題。c# - 兩個片段之間傳遞數據

我想這樣做,但我沒有從fragmentA得到任何數據fragmentB
fragmentA

submitButton.Click += delegate 
     { 
      TrackInfoFragment fragment = new TrackInfoFragment(); 
      Bundle bundle = new Bundle(); 
      bundle.PutString("message", "From Activity"); 
      fragment.Arguments = bundle; 
     }; 

fragmentB

Bundle bundle = new Bundle(); 
     string test = bundle.GetString("message"); 
     Console.WriteLine("Test: " + test); 
+0

如果使用Xamarin形式,那麼最簡單的方式來傳遞兩個組件之間的數據是使用[MessagingCenter](https://developer.xamarin.com/guides/xamarin-forms/app lication基本面/消息中心/)。不過,我懷疑你使用Xamarin Android。在這種情況下,你可以看看[MvvmCross](https://github.com/MvvmCross/MvvmCross)。它是一個跨平臺的庫,鼓勵Mvvm模式,並允許您將更多應用程序代碼移動到跨平臺庫中。作爲獎勵,它還包含一個消息(發佈者/訂戶)組件。 –

+0

@AnatoliyPidlubnyy在我單獨的教程項目中,我嘗試過使用MvvmCross框架,但它有相同的問題,也沒有太多的教程,有關api集成,組件之間的通信等,以及我需要的所有這些東西到我的應用程序中。這就是爲什麼我不使用這個框架。如果你有這個框架的好教程,請讓我知道。我可以再去一次。謝謝 –

+0

我感到你的痛苦。我帶了一點谷歌搜索來轉換我的Xamarin.Androind應用程序MvvmCross。文檔有點缺乏,但框架是值得花時間去學習的。這裏有一個[link](https://stackoverflow.com/a/15592431/6105337)來幫助你弄清楚如何使用MvvmCross Messenger。 –

回答

0

你實例化一個新的軟件包。 在fragmentB上,從Arguments獲取數據。

相反的:

Bundle bundle = new Bundle(); 
string test = bundle.GetString("message"); 
Console.WriteLine("Test: " + test); 

嘗試

string test = Arguments.GetString("message"); 
Console.WriteLine("Test: " + test); 

希望它可以幫助...

來源:Xamarin Android passing variable from Activity to Fragment returns null

+0

我嘗試了您的解決方案,但字符串返回null。 –

+0

對不起,你可以試試這個(來自https://forums.xamarin.com/discussion/comment/70756/#Comment_70756)在調用Activity: Bundle bundle = new Bundle(); bundle.PutString(「message」,「From Activity」); TrackInfoFragment fragment = new TrackInfoFragment(){Arguments = bundle} 正如答案所說,參數需要持續存在...... –