【问题标题】:Going back to activity with EditTexts populated. - Android回到填充 EditTexts 的活动。 - 安卓
【发布时间】:2013-09-10 02:40:24
【问题描述】:

我的活动 A 有 editTexts,用户可以从活动 A 转到活动 B 并填写更多信息。用户完成活动 B 后,他们按下按钮并返回 A。我想带着用户填写的信息返回 A,无需再次填写信息。

目前,这是我从 B 回到 A 的代码。

                Intent intent = new Intent(NewAddressActivity.this, CreditCardActivity.class);
                intent.putExtra("newAddressEntered", true);
                intent.putExtra("newAddress", (Serializable) newAddress);
                startActivity(intent);

使用此代码,当用户返回时,活动 A 上的字段为空。

*注意 - 我需要在返回时将数据从 B 传递到 A。

任何有关如何正确执行此操作的提示将不胜感激。

谢谢

【问题讨论】:

    标签: android android-intent android-activity start-activity


    【解决方案1】:

    你在正确的轨道上。你可以使用 .putExtra

    您可以使用 intent.putExtra("key", text_field.getText().toString()) 在您发送意图之前(在 第一个活动)和getIntent().getExtras().getString("key") 第二个活动。

    这是假设 text_field 是您要传递的 EditText 值来自。您也可以将“key”更改为您想要的任何内容。

    【讨论】:

      【解决方案2】:

      你实际上不是“回来”,而是开始一个新的空意图,这就是为什么这些字段又是空白的。相反,您应该调用:

      finish()
      

      关于填充不同活动的相关字段,我不建议这样做,但如果您需要保持这种方式,您可能有一个 singleton 类来存储所有字段值。

      另外,您可以将B 字段作为活动结果发送到A。-

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

      但是,我仍然建议将所有相关字段保留在一个 Activity 中。

      【讨论】:

      • 但是当我使用finish()返回时如何传递数据?
      • 这就是我提到的单例类。它有一组带有 getter/setter 的变量,因此您可以在转到 B 之前设置正确的 A 值,并在完成之前设置 B 值。这样,您就可以访问这两个活动中的任何一个的所有值。
      【解决方案3】:

      在清单文件中将 Activity A (CreditCardActivity) 的启动模式更改为 singleTop 并尝试。文档说

      如果 Activity 的实例已经存在于目标任务的顶部,系统会通过调用其 onNewIntent() 方法将 Intent 路由到该实例,而不是创建 Activity 的新实例。

      所以你的活动应该保留旧值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多