Android从preferences.xml获取密钥

liq*_*uid 6 java android preferences

我有一个PreferencesActivity显示preferences.xml带复选框的.

preferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Keywords">
    <CheckBoxPreference android:key="Essen" 
                        android:title="Essen" 
                        android:selectable="true" 
                        android:enabled="true"
                        android:persistent="false">
    </CheckBoxPreference>
    <CheckBoxPreference android:key="Kleidung" 
                        android:title="Kleidung" 
                        android:selectable="true" 
                        android:enabled="true"
                        android:persistent="false">
    </CheckBoxPreference>
</PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

PreferencesActivity:

public class PreferencesViewController extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在在另一个ListActivity我想要显示所选复选框中的所有键/标题.

我尝试访问首选项

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Run Code Online (Sandbox Code Playgroud)

要么

SharedPreferences prefs = getSharedPreferences("mypackage_preferences", 0);
Run Code Online (Sandbox Code Playgroud)

但两者都没有真正奏效.

当我调用prefs.getAll().size()结果为0时.

我可以访问密钥/标题getPreferenceScreen().getPreference(i).…但它不能从不同的工作Activity,只能从PreferenceActivity.

有没有人有解决方案如何让这项工作?

Rid*_*lly 2

我用

SharedPreferences prefs = 
    PreferenceManager.getDefaultSharedPreferences(getBaseContext());
Run Code Online (Sandbox Code Playgroud)

然后我可以通过prefs.get...()例如访问首选项prefs.getString(key)。你试过这个吗?

编辑:刚刚检查 -prefs.getAll()按预期工作并返回Map所有首选项。