我创建了一个存储用户设置的共享首选项活动,现在我想获取活动或普通java类中的值。请提供一个解决方案或示例我已经尝试过此代码但失败了。
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
SharedPreferences channel=this.getSharedPreferences(strFile, Context.MODE_PRIVATE);
strChannel=channel.getString(keyChannel,"Default").toString();
Toast.makeText(getApplicationContext(), strChannel, Toast.LENGTH_LONG).show();
}
在此代码strfile
中,例如。 com.android.pack.ClassName
来自要提取的值SharedPreference Activity
,而keyChannel是SharedPreference Activity
中相同的关键字。
请提供解决方案。
答案 0 :(得分:65)
如果您有保存值的SharedPreferenceActivity
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String imgSett = prefs.getString(keyChannel, "");
如果值保存在Activity中的SharedPreference中,那么这是保存它的正确方法。
SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putString(keyChannel, email);
editor.commit();// commit is important here.
这就是你可以检索这些值的方法。
SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String channel = (shared.getString(keyChannel, ""));
另请注意,您也可以在非Activity类中执行此操作,但唯一的条件是您需要传递Activity的上下文。使用此上下文来获取SharedPreferences。
mContext.getSharedPreferences(PREF_NAME, MODE_PRIVATE);
答案 1 :(得分:4)
我尝试使用此代码,从活动中检索共享首选项,但无法使其工作:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
sharedPreferences.getAll();
Log.d("AddNewRecord", "getAll: " + sharedPreferences.getAll());
Log.d("AddNewRecord", "Size: " + sharedPreferences.getAll().size());
每次尝试时,我的首选项都返回0,即使首选项活动保存了14个首选项。 我终于找到了答案。我将此添加到onCreate部分的首选项中。
getPreferenceManager()setSharedPreferencesName(" defaultPreferences&#34);
添加此语句后,我保存的首选项按预期返回。我希望这可以帮助其他可能遇到同样问题的人。
答案 2 :(得分:1)
这对我来说是最简单的程序:
SharedPreferences sp = getSharedPreferences("MySharedPrefs", MODE_PRIVATE);
SharedPreferences.Editor e = sp.edit();
if (sp.getString("sharedString", null).equals("true")
|| sp.getString("sharedString", null) == null) {
e.putString("sharedString", "false").commit();
// Do something
} else {
// Do something else
}
答案 3 :(得分:0)
您使用卸载应用程序并更改sharedPreferences名称,然后运行此应用程序。我认为它将解决问题。
用于从sharedPreferences中检索值的示例代码,您可以使用以下代码集
SharedPreferences shared = getSharedPreferences(PREF_NAME, MODE_PRIVATE);
String channel = (shared.getString(keyValue, ""));