在我的活动的所有视图中共享一个值

时间:2012-01-27 17:33:31

标签: android view preferences shared

这个问题更像是关于你们如何做到这一点的讨论。

我正在开发一个具有头像创建的应用程序,但这种创建发生在两个不同的活动中。

在第一个中,用户选择是男人还是女人和名字,在下一个活动中,用户必须选择他的脸,头发,衣服等。

如果用户是男性或女性,头发等的视图会发生变化,您如何实现将性别值传递给所有视图的方法?

我正在考虑使用静态成员来保存值,以便我可以访问我的视图,或者我应该使用SharedPreferences来实现它。

我认为使用SharedPreferences是一种更优雅的方式,但我想知道是否没有其他更好,更优雅的方法。

有没有人想过其他实现?

4 个答案:

答案 0 :(得分:2)

如果它只是一个小的信息,如"性别"我没有看到使用"静电"变量(当然,如果你的应用程序在后台崩溃,静态变量将变为null)。

如果您希望信息为persistent,那么

SharedPreference会很好(但我不认为你需要这个)。

您还可以选择扩展application类以跨活动存储静态数据。

答案 1 :(得分:1)

您可以将性别传递给具有启动活动Intent的下一个Activity。例如:

Intent intent = new Intent(this, NEXT_ACTIVITY.class)
intent.putExtra("gender", genderVariable)
startActivity(intent);

并在onCreate()上检索NEXT_ACTIVITY类中的值,如下所示:

String genderVariable = ""
Bundle parms = getIntent().getExtras()
if (parms != null) genderVariable = parms.getString("gender")

然后,将性别传递给所有视图,并将genderVariable保存在SharedPreferences或onSavedInstanceState包中。我更喜欢onSavedInstanceState。

希望它有所帮助。

答案 2 :(得分:0)

我认为我认为有很多方法可以做得更好。它取决于您想要存储的数据类型。

  1. 对于列表或哈希映射,使用单例类会很有帮助。
  2. 使用静态类会有所帮助,但可能会泄漏内存。您应该非常小心,并在发布应用程序之前始终使用logcat,MAT进行检查。
  3. 使用偏好设置或数据库。
  4. 将数据作为Intent extra传递(如果需要可以分配)。

答案 3 :(得分:0)

使用SharedPreferences是在整个应用程序中共享某些全局值的更好方法。