Xamarin Android在碎片之间传递数据

时间:2016-05-11 10:36:13

标签: android-fragments xamarin xamarin.android

我在Visual Studio Community 2015的Xamarin插件中创建了Android项目。我在我的应用程序中有4个片段,我在ViewPager中切换它,它在ActionBar中导航。在第二个和第三个选项卡中,有几个字段(第二个选项卡 - >名称,姓氏,邮件,电话和第三个 - >描述字段)。这些字段是EditText。在最后一个片段上有字段(TextView),我需要将数据从第2个,第3个传递到第4个片段。这些数据只是字符串值。 我尝试使用这段代码:

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

有人可以解释我如何在片段之间发送数据。谢谢你的回答。

更新 我只是这样做。

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

1 个答案:

答案 0 :(得分:0)

一种方法是在父活动中存储您需要传输的数据(假设两个片段都托管在同一个活动中),这样每个片段都可以使用(Activity as yourActivityType).YourPropertyName访问每个片段。

有关与Fragment中的Activity进行通信的更多详细信息,请访问:http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity