我有一个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来完成此任务.
原文链接:https://www.f2er.com/android/430383.html要访问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等值.