【问题标题】:How pass data between two android views?如何在两个 android 视图之间传递数据?
【发布时间】:2015-03-16 22:28:53
【问题描述】:

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

  1. 从主视图中,用户单击一个按钮以启动另一个视图。
  2. 显示新视图并从用户那里收集信息。
  3. 一旦用户在该新视图上单击“确定”,我需要将该数据“发送”回原始视图。

我发现的问题是,一旦我使用 StartActivity(有目的)或 SetContentView(Resource.Layout.Main),我的数据就消失了。我将收集到的信息放在一个全局变量中,但是当我返回原始视图时,它会被重新创建。

如何将这些数据传回原始视图,以便更新一些 UI 控件?

【问题讨论】:

标签: android android-activity xamarin xamarin-studio


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    这样的事情应该可以工作:

    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/

    【讨论】:

      【解决方案3】:

      您必须根据意图调用 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的“开始活动并获得结果”部分

      【讨论】:

      • “返回”到活动 1 的正确方法是什么?这就是 setResult 的作用吗?
      • SetResult 是执行此操作的调用,但您必须在终止 de Activity Class2 并将 Bundle 返回到 Class1 之后调用完成
      • 您必须使用 Class1 中的 startActivityForResult 调用 Class2
      • 你有预付款吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多