我有一个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 举报,一经查实,本站将立刻删除。