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

时间:2015-02-11 20:53:02

标签: android android-activity xamarin xamarin-studio

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

  1. 在主视图中,用户单击启动另一个视图的按钮。
  2. 显示新视图并从用户收集信息。
  3. 一旦用户在该新视图上单击“确定”,我需要将该数据“发送”回原始视图。
  4. 我发现的问题是,一旦我使用StartActivity(有意图)或SetContentView(Resource.Layout.Main),我的数据就消失了。我将收集到的信息放在一个全局变量中,但当我回到原始视图时,它会被重新创建。

    如何将此数据传回原始视图以便我可以更新某些UI控件?

3 个答案:

答案 0 :(得分:2)

http://developer.android.com/training/basics/intents/result.html

您是否尝试过startActivityForResult。我猜这就是你要做的事情。

答案 1 :(得分:0)

这样的事情应该有效:

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/

答案 2 :(得分:0)

您必须使用intent调用startActivityForResult并实现onActivityResult以捕获来自Class2的信息。

活动类别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()。

活动类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