2016-05-11 49 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