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等值.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...