【问题标题】:How do I access a value from my Preference?如何从我的首选项中访问一个值?
【发布时间】:2017-04-29 17:07:04
【问题描述】:

我的应用包含共享偏好,因此在我的“设置-菜单”中,我可以从列表中选择一个项目。

另一个 java 文件中,我想访问所选项目的值

未能通过意图传递整数值,因为整数是在私有静态私有布尔值中声明的,Android Studio 告诉我,它不能从静态内容中引用

那么我怎样才能从这个整数中获得我的价值呢?在此先感谢 :)。



编辑: firstival,非常感谢这么多答案!但是由于我对 java 的了解不多,所以无法按照您的指示进行操作,因此我将更详细地描述我的问题。 我正在使用 androids 模板“设置-活动”。在我的 strings.xml 中,我有

 <string name="Values">Values</string>
        <string-array name="pref_example_list_titles">
            <item>A</item>
            <item>B</item>
            <item>C</item>
        </string-array>

        <string-array name="pref_example_list_values">
            <item>01</item>
            <item>02</item>
            <item>03</item>
        </string-array>

在我的 SettingsActivity.java 中

private static Preference.OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {

        @Override
        public boolean onPreferenceChange(Preference preference, Object value) {
            String stringValue = value.toString();

            if (preference instanceof ListPreference) {

                ListPreference listPreference = (ListPreference) preference;
                int index = listPreference.findIndexOfValue(stringValue);


                preference.setSummary(
                        index >= 0
                                ? listPreference.getEntries()[index]
                                : null);
{...}

在另一个 java 文件中,一个片段“FirstFragment.java 我终于想将 pref_example_list_values 中的值分配给一个新的整数,称为“Vallue2”。

所以请你解释一下,我是怎么做到的,因为我无法理解你的解释。非常感谢!

【问题讨论】:

  • 看看:stackoverflow.com/questions/3624280/…。如果仍然不清楚,请发布您的代码
  • 请发布您用于通过活动传递数据的代码
  • 实际上我没有任何代码可以通过活动传递数据,这就是我要求它的原因。
  • 并通过使用:SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);我收到“getsharedpreferences”无法解决的错误
  • 请在提问前阅读this (how to ask)this (mcve),因为它们将帮助您从社区获得更多更好的答案。

标签: android android-intent integer sharedpreferences


【解决方案1】:

As per documentation:

SharedPreferences 对象指向一个包含键值对的文件,并提供简单的方法来读取和写入它们。

这意味着单个文件保存该值,并且读取和写入它的首选方式如下:

SharedPreferences preference = yourContext.getSharedPreferences(yourFileName), Context.MODE_PRIVATE
);
preference.edit().putString(AN_IDENTIFIER, "aValue").apply();

然后去取值:

SharedPreferences preference = yourContext.getSharedPreferences(yourFileName), Context.MODE_PRIVATE
);
preference.getString(AN_IDENTIFIER,"a default value to use");

【讨论】:

  • 回答问题时,回答它。不要将答案链接到其他地方,还要注意您的链接已损坏。 (404 页)。
  • 我可以建议一些改进吗?我会编辑你的答案,如果你不喜欢它,我会撤消它。
  • 是的,当然!继续!
  • 就像问题有指导原则一样,answers 也是如此。尝试写好的,赞成票会来,我认为你的回答不值得赞成/反对票,你可能让人们看到它,并且因为它没有回答它,所以投了反对票。耐心点,只在你的文字有帮助的时候才写,然后,当你有足够的声誉时,使用comments 写建议或链接,或请求更多详细信息。
  • 没关系!我明白。因为我是新的和学习的东西。谢谢你的建议。 @博纳蒂
猜你喜欢
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2017-10-16
相关资源
最近更新 更多