如何在两个 android 视图之间传递数据?
How pass data between two android views?
我有一个简单的应用程序需要执行以下操作:
- 用户在主视图中单击启动另一个视图的按钮。
- 显示新视图并收集用户信息。
- 一旦用户在新视图上单击“确定”,我需要"send"将该数据返回到原始视图。
我发现的问题是,一旦我使用 StartActivity(带有意图)或 SetContentView (Resource.Layout.Main),我的数据就消失了。我将收集到的信息放在一个全局变量中,但是当我返回原始视图时,它会被重新创建。
如何将此数据传递回原始视图,以便我可以更新一些 UI 控件?
http://developer.android.com/training/basics/intents/result.html
你试过startActivityForResult吗?我猜这就是你想要做的。
像这样的东西应该可以工作:
var activity2 = new Intent (this, typeof(Activity2));
activity2.PutExtra ("MyData", "Data from Activity1");
StartActivity (activity2);
有关其工作原理的更多信息,请点击此处:
http://developer.xamarin.com/recipes/android/fundamentals/activity/pass_data_between_activity/
您必须调用 startActivityForResult 并实现 onActivityResult 以捕获来自 Class2 的信息。
Activity 第 1 类:
startActivityForResult(new Intent(this, Class2.class), 1);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
// do something
}
super.onActivityResult(requestCode, resultCode, data);
}
要将信息发送到 Class1,您必须使用包中的信息调用 setResult 并调用 finish()。
Activity 第 2 类:
Bundle bundle = new Bundle();
bundle.putString("---your info---");
setResult(RESULT_OK, new Intent().putExtras(bundle));
finish();
阅读 http://developer.android.com/reference/android/app/Activity.html
中的 "Starting Activities and Getting Results" 部分
我有一个简单的应用程序需要执行以下操作:
- 用户在主视图中单击启动另一个视图的按钮。
- 显示新视图并收集用户信息。
- 一旦用户在新视图上单击“确定”,我需要"send"将该数据返回到原始视图。
我发现的问题是,一旦我使用 StartActivity(带有意图)或 SetContentView (Resource.Layout.Main),我的数据就消失了。我将收集到的信息放在一个全局变量中,但是当我返回原始视图时,它会被重新创建。
如何将此数据传递回原始视图,以便我可以更新一些 UI 控件?
http://developer.android.com/training/basics/intents/result.html
你试过startActivityForResult吗?我猜这就是你想要做的。
像这样的东西应该可以工作:
var activity2 = new Intent (this, typeof(Activity2));
activity2.PutExtra ("MyData", "Data from Activity1");
StartActivity (activity2);
有关其工作原理的更多信息,请点击此处: http://developer.xamarin.com/recipes/android/fundamentals/activity/pass_data_between_activity/
您必须调用 startActivityForResult 并实现 onActivityResult 以捕获来自 Class2 的信息。
Activity 第 1 类:
startActivityForResult(new Intent(this, Class2.class), 1);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK) {
// do something
}
super.onActivityResult(requestCode, resultCode, data);
}
要将信息发送到 Class1,您必须使用包中的信息调用 setResult 并调用 finish()。
Activity 第 2 类:
Bundle bundle = new Bundle();
bundle.putString("---your info---");
setResult(RESULT_OK, new Intent().putExtras(bundle));
finish();
阅读 http://developer.android.com/reference/android/app/Activity.html
中的 "Starting Activities and Getting Results" 部分