我有申请,我有三个活动。第一个和第二个活动有listview。我需要第一个和第二个活动中的选定值,以便在第三个活动中显示一些数据。这是最好的方法吗?将Intent从第一个活动传递到第二个活动,然后从第二个活动传递到第三个活动或使用SharedPrefenreces更好吗?
答案 0 :(得分:1)
这取决于您的需求。如果您需要在销毁应用时保持数据的持久性,那么您可能希望将数据保存在SharedPreferences
中(还取决于SharedPrefs
以后的数据类型&#39 ; t限于他们可以存储的东西)或数据库。
如果您不担心它是持久性的,那么通过Intent.putExtra()
传递数据就没问题了。您还可以创建Bundle并通过Bundle
传递Intent
并随时添加数据。
您还可以选择创建一个implements Serializable
的单独类。然后,您可以通过Object
创建并传递课程Intents
。 Here is a post about doing that
答案 1 :(得分:1)
是的,这可以通过多种方式实现:
Sqlite :如果数据在第一个和第二个活动中很大,则可以使用Sqlite存储数据,并在第三个和第二个活动中检索数据 活动(但如果数据较少,这不是一个可行的解决方案)
共享首选项:此处您在shared-Preferences中保存的数据是在xml文件中完成的,因此即使应用是 停止了数据保留。这有助于保存密码 和登录详情等
意图:我认为在您的情况下使用意图传递数据是更好的选择,因为您之间传递的数据大小 第一,第二到第三项活动较少。
Finalizing
::只需将数据放入第一个活动的数据包中即可。接下来获取第二个活动中的数据(Bundle),并在第二个活动中添加数据,以及从第一个活动收到的数据包中的数据,并将最后一个包从第二个活动传递到第三个活动。
答案 2 :(得分:0)
在我看来,最简单的方法是创建一个ArrayManager类,其中的变量是静态的。这样,您就可以创建在ArrayManager类中选择和调整数组大小的方法。唯一不好的情况是,如果您必须持有对视图,上下文或活动的引用(这将产生内存泄漏)。在这种情况下,codeMagic的解决方案是理想的。
答案 3 :(得分:0)
在您的情况下,如果您需要将相同的数据从第一个活动传递到第二个活动,那么第三个活动&您的数据很小,我建议使用Shared Preferences
。
如果从第一个活动传递到第二个活动的数据与第三个活动的第二个活动的数据不同,那么只需使用意图。
有一些技巧。如果您的第二个活动总是需要第一个活动的数据来运行,那么当您想要将第三个活动返回到第二个活动时,您将会陷入困境,因为从第三个活动中您无法获得第一个活动结果。在这种情况下,保存数据我的意思是Shared Preferences
或Sqlite
是最好的。
在这些情况之上,您需要找到最适合您应用的内容。