Java 如何将数据从每个活动传递到另一个活动?

Java 如何将数据从每个活动传递到另一个活动?,java,android,oop,data-structures,Java,Android,Oop,Data Structures,我在我的项目中有5项活动,其中一项活动以以下方式导致另一项活动: 挑选 选择类型 选择MinBudge 选择MaxBudget 坐式 每个选定项都是每个活动中的一个字符串 从每个活动中,用户从DropDownList中选择一个选项,并向前移动到下一个活动。我想在最后一次活动(着陆)中收集所有5个变量。我需要知道一些有效的方法来做到这一点 我使用Kotlin,因此示例代码将仅出现在Kotlin中,但我将尝试注释掉每一行代码 解决方案1:创建一个SingleTon类来保存数据并在活动结束时使用其数据

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

  • 挑选
  • 选择类型
  • 选择MinBudge
  • 选择MaxBudget
  • 坐式
  • 每个选定项都是每个活动中的一个字符串

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


    我使用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类,依此类推。当您到达结束活动时,simple重新访问该类并检索存储的相应数据

    Pro:在活动中减少重复的意图代码。
    缺点:显然静态变量是永久的,除非它的类装入器超出范围。由于数据非常少,没有什么太多的问题需要担心


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

    使用IntentFirst解决方案将数据打包,然后传递给下一个活动:您可以创建一个单例类来保存数据。最后,检索保存的数据并执行操作。另一种选择是逐渐传递intent,并在最后从intent加载数据。@维根我使用了这种方法,它正在工作。@TaseerAhmad这更有效。对我有用。在这种情况下,单音不是正确的选择。此外,Android中的静态数据也存在问题(当资源不足时,Android会关闭应用程序的jvm,如果您不关心静态数据,则会丢失它们)。