在我的活动的所有视图中分享一个价值观

发布于 2024-12-29 12:19:45 字数 353 浏览 2 评论 0原文

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

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

在第一个活动中,用户选择是男性还是女性以及姓名,在下一个活动中,用户必须选择他的脸、头发、衣服等。

由于如果用户是男性或女性,头发等的视图会发生变化。作为一名女性,您将如何实现一种将性别价值传递给所有视图的方法?

我正在考虑使用静态成员来保存该值,以便我可以访问我的视图内部,或者也许我应该使用 SharedPreferences 来做到这一点。

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

有没有人考虑过其他实现?

This question is more like a discussion about how you guys would do it.

I'm developing an application that has an Avatar Creation, but this creating occurs across two different Activities.

In the first one the user selects whether is man or a woman and a name, in the next Activity the user has to select his face, hair, clothes and etc.

Since the views for hair and etc changes if the user is a man or a woman how would you implement a way to pass the gender value to all the Views?

I was thinking about using a static member to hold the value so I could access inside my views, or maybe I should use SharedPreferences to do it.

I think using the SharedPreferences is a more elegant way to do it but I'm wondering if there isn't any other better and more elegant way of doing it.

Has anyone thought about other implementations?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

对你而言 2025-01-05 12:19:45

如果它只是像“性别”这样的小信息,我认为使用“静态”变量不会有太大危害(当然,如果您的应用程序在后台崩溃,静态变量将变为空)。

如果您希望信息持久化(但我不认为你需要这个)。

另一种选择是您可以扩展 application 类来存储静态跨活动的数据。

If its only a small information like "gender" i don't see much harm using "Static" variable(Ofcourse the static variable will become null if your app crashes when its in the background).

SharedPreference will come good if you want the information to be persistent(But i don't see you need this).

One more choice is you do can extend the application class to store the static data across activities.

恬淡成诗 2025-01-05 12:19:45

您可以将性别传递给具有启动活动意图的下一个活动。示例:

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")

然后,将性别传递给所有视图,并将性别变量保留在 SharedPreferences 或 onSavedInstanceState 包上。我更喜欢 onSavedInstanceState。

希望有帮助。

You could pass the gender to the next Activity with start activity Intent. Example:

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

And retrieve the value in NEXT_ACTIVITY class on onCreate() like this:

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

Then, pass gender to all your views and persist the genderVariable on SharedPreferences or onSavedInstanceState bundle. I prefer onSavedInstanceState.

Hope it helps.

雨巷深深 2025-01-05 12:19:45

我觉得方法有很多,其中我认为比较好的有4种。这当然取决于您想要存储什么类型的数据。

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

I think there are many ways of which 4 I think are better. It ofcourse depends on what kind of data you want to store.

  1. For Lists or hashmaps, using a singleton class would be helpful.
  2. Using a static class would help, but might leak memory. You should be very careful and always check using logcat, MAT before releasing your app.
  3. Using preferences or database.
  4. Passing data as Intent extra (parcelable if needed).
好倦 2025-01-05 12:19:45

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

Using SharedPreferences would be the better way to share some global values across the application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文