在Xamarin中的活动之间传递数据

时间:2018-03-29 14:49:09

标签: c# android xamarin

即使我按照此页面的说明操作,我也无法将MainActivity中的数据共享给Welcome活动:https://developer.xamarin.com/recipes/android/fundamentals/activity/pass_data_between_activity/

MainActivity(Activity1)

Button button = FindViewById<Button>(Resource.Id.send);
EditText myName = FindViewById<EditText>(Resource.Id.name);
string name = myName.Text;

button.Click += delegate { 
    var welcome = new Intent(this, typeof(Welcome));
    welcome.PutExtra("name", name);
    StartActivity(welcome);
};

欢迎(活动2)

string name = Intent.GetStringExtra("name") ?? "Data not available";

我无效,不知道为什么。有什么建议或建议吗?

2 个答案:

答案 0 :(得分:3)

单击按钮时必须获取文本,否则它将没有值(因为创建UI时,EditText将为空,因此当时为空值)所以

string name = null;
button.Click += delegate { 
        name = myName.Text;
        var welcome = new Intent(this, typeof(Welcome));
        welcome.PutExtra("name", name);
        StartActivity(welcome);
    };

答案 1 :(得分:0)

如果要转到子视图,如果要返回结果,请使用StartActivityForResult。您可以在ActivityResult中获取返回对象:

  

受保护的重写void OnActivityResult(int requestCode,   [GeneratedEnum]结果resultCode,意图数据)

因此,这是在活动之间传递数据和返回数据的好方法。