【问题标题】:Proper way of accessing variable Java/Android访问变量 Java/Android 的正确方法
【发布时间】:2013-04-15 18:14:05
【问题描述】:

我有多个课程:

  • 主要活动
  • 服务
  • 设置

通过设置,可以更改服务中我需要的某个延迟(变量)(我需要该变量的值)。

我应该如何实现这个?

  • 我应该从一个意图开始设置并使其返回延迟值吗?
  • 我应该创建一个 getter,它可以在使用 mysettings.getdelay() 之类的设置实例创建后返回值吗?
  • 或者有其他(/更好的)方法吗?

谢谢

[编辑]
我最终使用了类似 Ridcully 的答案。唯一的区别是我没有给出公开声明,而是使用了 getter 和 setter。人们总是告诉我使用 getter 和 setter。

【问题讨论】:

    标签: java android variables


    【解决方案1】:

    对于您的设置,您应该为此使用 Android 标准 - SharedPreferences。 阅读此API Guide 开始。

    编辑:

    为了仅在应用的生命周期内存储数据,您还可以使用自己的 Application 类并在其中使用变量:

    自定义应用类:

    public class MyApplication extends Application {
    
        public static int delay = 0;
    
    }
    

    在AndroidManifest.xml中:

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:name=".MyApplication">
    

    【讨论】:

    • SharedPreferences 会将我的数据存储在一个文件中,以便我的设置将是我上次打开应用程序时给它们的值。正确的?我可以使用它,但如果我不希望我的应用存储设置,我该怎么办?
    • 数据存储在私人区域,只能从您的应用程序访问。如果您在应用程序运行期间只需要临时“设置”,您可以使用自己的应用程序类并使用其中的变量来保存应用程序生命周期内的数据。
    • 很抱歉,我不明白您所说的“您自己的应用程序类”是什么意思
    • 我在答案中添加了一个示例。
    • 啊谢谢,现在我明白了:) 但是你声明它是静态的,据我所知,你不应该改变静态变量的值,对吗?或者我在这里错过了什么?你认为这可能是最好的解决方案?
    【解决方案2】:

    我是否应该以意图开始设置并使其返回值 延迟?

    如果Settings 是Activity,那么是的。检查使用startActivityForResult,假设您的Settings 类是Activity。您可以启动 Activity 并返回带有数据的 Intent 并根据返回的内容更改变量。

    我是否应该创建一个 getter,它可以在使用 mysettings.getdelay() 之类的设置实例创建后返回值?

    如果它是一个常规类而不是Activity,那么您可能只想设置一个getter() 方法并根据传递的某些参数返回一个值。

    这是获取变量的几种方法。如果您想永久存储它们,那么 Ridcully 的答案是合适的。如需更多帮助,请发布相关代码和更具体的问题。希望这会有所帮助。

    【讨论】:

    • 设置确实是一项活动。它是一种对话框(我在 XML 中定义)背后的代码,它允许您更改设置。所以,我会使用你的第一个建议。谢谢
    • 不客气。关于您的Settings 对话框。您可能知道这一点,但您可以通过在您的manifest 的activity 标记中使用android:theme="@android:style/Theme.Dialog" 使Actviity 显示为dialog
    • 我已经这样做了,但实际上我并不真正知道它的作用。我认为它只是让布局以最小的宽度和高度出现在屏幕的中心。或者它还有什么作用?
    • 是的,它只是给了它dialog 的“外观”。这可以帮助用户感觉他们没有离开他们在应用中的位置
    猜你喜欢
    • 2016-09-21
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多