【问题标题】:How to pass data from each activity to another? [duplicate]如何将数据从每个活动传递到另一个活动? [复制]
【发布时间】:2019-05-12 11:41:06
【问题描述】:

我的项目中有 5 项活动,其中一项活动以下列方式导致另一项活动:

  1. 选择
  2. 选择类型
  3. SelectMinBudge
  4. 选择最大预算
  5. 坐姿

每个选定的项目都是来自每个活动的字符串。

从每个活动中,用户从 DropDownList 中选择一个选项,然后前进到下一个活动。我想在最后一个活动(着陆)中收集所有 5 个变量。我需要知道一些有效的方法来做到这一点。

Screenshot of Project classes

【问题讨论】:

  • 将数据放到 bundle 中,然后通过 Intent 将其传递给下一个活动
  • 第一个解决方案:您可以创建一个单例类来保存数据。最后检索保存的数据执行您的操作。另一种选择是逐渐传递意图并在最后从意图加载数据。
  • @Vigen 我用过这个方法,效果很好。
  • @TaseerAhmad 这更有效。为我工作。
  • 在这种情况下单音不是正确的选择。 Android中的静态数据也存在问题(Android会在资源不足时关闭您应用的jvm,如果您不关心它们,您将丢失静态数据)。

标签: java android oop data-structures


【解决方案1】:

我使用 Kotlin,因此示例代码仅在 Kotlin 中,但我会尝试注释掉每一行代码。

解决方案 1: 创建一个 SingleTon 类来保存数据并在活动结束时使用其数据。

class DataHolder {    //public class

   companion object { //Equavilent to Java static.
     var variable1 = 0   
     var variable2 = "Some string"  //Define your static variables.
     .... 
  }
}

在您的 Activity1 -> Activity2 中访问此 Singleton 类,依此类推。当您到达结束活动时,只需重新访问此类并检索存储的相应数据。

优点: Activity 中重复的 Intent 代码较少。
缺点: 显然静态变量是永久性的,除非它的类加载器退出的范围。由于数据很少,不用担心太多。

解决方案 2: 创建意图,加载数据并逐渐将其传递给您的活动,并在结束活动时检索数据。唯一的缺点是您必须格外小心地重复插入数据,使用相应的键获取数据。除非您格外小心,否则可能容易“出错”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    相关资源
    最近更新 更多