微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Android从preferences.xml获取密钥

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

的preferences.xml:

BoxPreference android:key="Essen" 
                        android:title="Essen" 
                        android:selectable="true" 
                        android:enabled="true"
                        android:persistent="false">
    BoxPreference>
    BoxPreference android:key="Kleidung" 
                        android:title="Kleidung" 
                        android:selectable="true" 
                        android:enabled="true"
                        android:persistent="false">
    BoxPreference>

PreferencesActivity:

public class PreferencesViewController extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromresource(R.xml.preferences);
    }
}

现在在不同的ListActivity中,我想从选中的复选框中显示所有键/标题.

我尝试访问首选项

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

要么

SharedPreferences prefs = getSharedPreferences("mypackage_preferences",0);

但两者都没有真正奏效.

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

我可以使用getPreferenceScreen().getPreference(i)来访问Keys / Title.但是它不能从另一个Activity中工作,只能从PreferenceActivity中工作.

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

最佳答案
您不需要PreferenceActivity来完成此任务.

要访问PreferenceActivity中使用的首选项,您应该使用

SharedPreferences prefs = 
    PreferenceManager.getDefaultSharedPreferences(getBaseContext());

如果您的数据列表来自服务器,那么您可以使用ListActivity / ExpandableListActivity /任何自定义活动来可视化它,但这样您就需要编写更改首选项的处理程序.

这样做的常见方法是:

private void saveStringPreference(final String key,final String value)
{
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString(key,value);
    editor.commit();
}

如果需要,您应该创建类似的包装器来处理int,boolean等值.

原文地址:https://www.jb51.cc/android/430383.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐