我在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