我在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;
但你在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