如何在两个 android 视图之间传递数据?

How pass data between two android views?

我有一个简单的应用程序需要执行以下操作:

  1. 用户在主视图中单击启动另一个视图的按钮。
  2. 显示新视图并收集用户信息。
  3. 一旦用户在新视图上单击“确定”,我需要"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" 部分