我正在尝试从不同的活动中获取并设置listPreference值,但它无效。
当我从我的主要活动中读取和写入时,它只会保留我写的任何内容,所以我假设当我离开活动时我没有正确定位listPreference,因为它在我的偏好活动中工作没问题。
我在开发者网站上看到了一些关于使用getValue和getEntryValues的CharSequence的引用,但是我没有幸运能让它们正常工作。
这是我的代码,用于单击按钮并设置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处于活动状态,并且它始终是我从上面列出的主电源活动中写入的数字。问题是当我转到实际的Preference活动时,它在ListPreference上更改它时不匹配或更新并从那里启动相同的活动(它仍然读取我从Main活动按钮设置的值)
尝试读取ListPreference的活动的代码如下: SharedPreferences settings = getSharedPreferences("PreferenceXML",
MODE_PRIVATE);
Toast.makeText(this, settings.getString("ListPreferenceInXML","1"), 1000).show();
答案 0 :(得分:3)
所以我终于明白了,问题在于我调用偏好的方式。在这两种情况下,不是像这样调用偏好;
SharedPreferences settings = getSharedPreferences("PreferenceXML",
MODE_PRIVATE);
像这样打电话给他们:
SharedPreferences settings =
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
我不确定在调用首选项的第一种方式中是否缺少一步,但第二种方式就像冠军一样。