2016-05-11 82 views
0

我在Visual Studio Community 2015的Xamarin插件中創建Android項目。我在應用程序中創建了4個片段,並通過在ActionBar中導航的ViewPager切換它們。在第二個和第三個選項卡中,有幾個字段(第二個選項卡 - >名稱,姓氏,郵件,電話和第三個 - >說明字段)。這些字段是EditText。在最後一個片段有字段(TextView),我需要從第二,第三到第四個片段傳遞數據。這些數據只是字符串值。 我嘗試使用此代碼:Xamarin在片段之間傳遞Android數據

public void OnTabSelected(ActionBar.Tab tab, FragmentTransaction ft) 
    { 
     viewPager.CurrentItem = tab.Position; 
     if (tab.Position == 0) 
     { 
      actionBar.SetTitle(Resource.String.GalleryTab); 
     } else if (tab.Position == 1) 
     { 
      actionBar.SetTitle(Resource.String.DescriptionTab); 
     } else if (tab.Position == 2) 
     { 
      actionBar.SetTitle(Resource.String.ContactInfoTab); 
     } else if (tab.Position == 3) 
     { 
      actionBar.SetTitle(Resource.String.SummaryTab); 
      nameContact.TextChanged += (object sender, Android.Text.TextChangedEventArgs e) => 
      { 
       nameSummary.Text = e.Text.ToString(); 
      };     
     } 

nameContact和nameSummary正確初始化。

var nameContact = FindViewById<EditText>(Resource.Id.nameContactText); 
var surnameContact = FindViewById<EditText>(Resource.Id.surnameContactText); 

var nameSummary = FindViewById<TextView>(Resource.Id.nameSummary); 
var surnameSummary = FindViewById<TextView>(Resource.Id.surnameSummary); 

有人可以解釋我如何發送片段之間的數據。謝謝你的答案。

UPDATE 我只是做這樣的事情。

var nameContact = FindViewById<EditText>(Resource.Id.nameContactText); 
      nameContactText = nameContact.Text.ToString(); 
      var nameContactSummary = FindViewById<TextView>(Resource.Id.nameSummary); 
      nameContactSummary.Text = nameContactText; 

回答

0

做到這一點的方法是存儲你需要在父活動轉移(假設這兩個片段在同一活動舉辦),因此每個片段將有機會獲得在每一個片段用(Activity as yourActivityType).YourPropertyName這個數據。與來自片段活動交流

更多細節可以在這裏找到:http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity

+0

但你在Xamarin知道你在C#寫的,而不是在Java中,也有一些差異如何編寫代碼。 我創建了這樣的樣子: var inflate = Application.Context.GetSystemService(Context.LayoutInflaterService)as LayoutInflater; 查看contactLayout = inflate.Inflate(Resource.Layout.AddContactLayout,null); EditText nameContact = contactLayout.FindViewById (Resource.ID.nameContactText); string nameContactText = nameContact.Text.ToString(); 當我去第四個片段時,它會崩潰我的應用程序。 – coldzero