我有一个在activity_1中创建的数组,必须在activity_2中使用。
我是怎么做到的?
我创建了一个类(array_provider.class),它将实现此数组的getter和setter。
所以在activity_1中,我初始化了一个array_provider的对象,然后我用来创建我的数组。
在activity_2中,我还初始化了array_provider的一个对象,然后用来获取我的数组。
但是在activity_2中,当我使用array_provider.getArray()
时,即使在我的activity_1中,此数组的大小为7,我也没有数组(大小= 0)。
所以我想在活动之间保持这个数组的相同值。
我在这个问题之前做了一些研究,我找到了两个选择。
还有其他解决方案吗? 我错了吗?
非常感谢
答案 0 :(得分:0)
您可以通过转换数组列表将数组列表存储在共享首选项中,也可以创建可以从任何地方访问的静态数组。
答案 1 :(得分:0)
如果你有一个数组列表,它通常是多个数组(数据集)的更大模型的一部分。这样的模型不应该存在于单个Activity的上下文中,而应该存在于Application的一般上下文中。所有活动都可以访问它们后面的常见应用程序。
现在,如果您创建或编辑此类数据集,则将其存储在模型中的同一个Activity中。然后,您只需通过意图传递数据集的ID。在随后的活动中,您可以通过给定的ID从模型中读取数据集。
默认情况下,Android Studio不会为应用程序创建类。现在很多人认为拥有一个核心应用程序并不重要。如果它不重要,Android库的制造商对ID等简单数据类型的意图不会有限。他们没有设计它来传递模型本身。
答案 2 :(得分:0)
所以在activity_1中,我初始化了一个array_provider的对象然后我用了 它来创建我的数组。
在activity_2中,我还初始化了array_provider的对象,然后是I 用它来获取我的数组。
但是在activity_2中,我使用时没有数组(size = 0) array_provider.getArray()即使在我的activity_1中,这个数组也有 大小为7。
问题的根源:
出现此问题是因为您正在创建ArrayProvider的不同实例,并且它们不相同且它们不共享该值!
可能的解决方案:
制作数组static
。这是最简单的方法,但是你无法在活动之间共享数据时这样做,这是不好的做法。想象一下,有20个活动,几乎所有变量都可以结束static
SharedPreferences。这可能看起来很棘手,但如果你的活动中有一些共享数据,那就是要走的路。
依赖注射。 (匕首2)例如。它更复杂,不适合初学者,但它可以让您在整个应用程序中使用相同的类实例。
内部数据库。如果您想存储更多共享数据(不只是一个数组),您可以将其存储在轻量级数据库中,例如Android Room
结论,在您使用一个数组的情况下,随着您的应用增长,我会将其设为static
,您应该研究其他数据共享选项