我试图从不同的活动中获取并设置listpreference值,但它不起作用。
当我从主活动中读写它时,它只保留我写的东西,所以我假设当我退出活动时,我没有正确地针对listpreference,因为它在我的preference活动中工作没有问题。
我在开发人员网站上看到了一些使用getvalue和getentryvalues的charsequence的引用,但是我也没能让它们正常工作。
下面是我的代码,用于单击一个按钮并设置listpreference值,然后它启动一个意图来切换活动:
主活动,尝试将listproference的值设置为第一个索引值;
SharedPreferences settings = getSharedPreferences("PreferenceXML",
MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("ListPreferenceInXML", "1");
editor.commit();
String levelCheck = settings.getString("ListPreferenceInXML","1");
在我的下一个活动中,我调用read the value on launch来查看哪个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());
我不确定第一种调用偏好的方法是否遗漏了一步,但第二种方法工作起来像个冠军。