我试图从不同的活动中获取并设置listPreference值,但它不起作用.
当我从主活动中读取和写入它时,它只会保留我编写的内容,因此我假设我不在活动中时未正确定向listPreference,因为它在我的首选项活动中正常工作.
我在开发人员网站上看到过一些使用getValue和getEntryValues引用CharSequence的信息,但我也没有运气让它们正常工作.
这是我的代码,用于单击按钮并设置listpreference值,然后启动切换活动的意图:
Main Activity,尝试将listpreference的值设置为第一个索引值;
SharedPreferences settings = getSharedPreferences("PreferenceXML",
MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("ListPreferenceInXML", "1");
editor.commit();
String levelCheck = settings.getString("ListPreferenceInXML","1");
在下一个活动中,我调用启动时读取值,以查看哪个listPreference是活动的,并且始终是我从上面列出的mains活动中写入的数字.问题是当我转到实际的“首选项”活动时,当我在ListPreference上更改它并从那里启动相同的活动时,它不匹配或不更新(它仍然读取我从“主”活动按钮中设置的值)
尝试读取ListPreference的活动的代码如下:
SharedPreferences settings = getSharedPreferences("PreferenceXML",
MODE_PRIVATE);
Toast.makeText(this, settings.getString("ListPreferenceInXML","1"), 1000).show();
解决方法:
所以我终于弄清楚了,问题出在我称呼偏好的方式上.在两种情况下,都不必像这样调用首选项;
SharedPreferences settings = getSharedPreferences("PreferenceXML",
MODE_PRIVATE);
像这样称呼他们:
SharedPreferences settings =
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
我不确定在调用首选项的第一种方法中是否缺少步骤,但是第二种方法像冠军一样工作.