如何从我的首选项中访问值?

时间:2016-12-14 11:26:26

标签: android android-intent integer sharedpreferences

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

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

通过intent 传递整数值失败,因为整数是在private static,private boolean中声明的,并且Android Studio告诉我,无法从静态内容中引用

那么如何从这个整数中接收我的值呢?提前致谢:)。



编辑: firstival,非常感谢那么多答案!但由于我对java的关注度不高,所以我无法按照您的指示行事,因此我会更接近地描述我的问题。 我正在使用机器人模板"设置 - 活动"。在我的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文件中,片段&#34; FirstFragment.java我最终想要将 pref_example_list_values 中的值赋给一个新的整数,称为&#34; Vallue2&#34;。

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

1 个答案:

答案 0 :(得分:0)

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