如何在两个android视图之间传递数据?
我有一个简单的应用程序,需要做到以下几点:如何在两个android视图之间传递数据?
- 从主视图用户点击一个按钮,启动另一种看法。
- 显示新视图并收集用户的信息。
- 一旦用户在新视图上单击确定,我需要将该数据“发送”回原始视图。
我发现的问题是,一旦我使用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中的信息。
活动的Class1:
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);
}
对于发送信息到Class则必须调用的setResult在你的包中的信息,并调用finish()。
活动等级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
【活动期间Xamarin传递数据(的什么是“返回”到Activity 1的正确方法?那是什么setResult呢? – Alex 2015-02-11 21:17:52
SetResult是这样做的调用,但您必须调用finish来终止de Activity Class2并将Bundle返回到Class1 – 2015-02-11 21:19:16
您必须使用来自Class1的startActivityForResult调用Class2 – 2015-02-11 21:21:37
可能重复http://stackoverflow.com/questions/ 21096523/xamarin-pass-data-between-activity) – Jason 2015-02-11 20:54:58
@aleckz别忘了检查正确的答案 – 2015-02-16 21:19:57