在活动/普通类中获取Android共享首选项值

我做了一个存储用户设置的共享首选项活动,现在我想要在一个活动或正常的java class.please提供一个解决scheme或例子我已经试过这个代码,但失败的值。

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.ClassNameSharedPreference Activity从要获取的值中获取,而keyChannel是SharedPreference Activity相同键。

请提供解决scheme。

Solutions Collecting From Web of "在活动/普通类中获取Android共享首选项值"

如果你有一个你已经保存了你的值的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); 

我试过这个代码,从一个活动检索共享首选项,并不能得到它的工作:

  SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); sharedPreferences.getAll(); Log.d("AddNewRecord", "getAll: " + sharedPreferences.getAll()); Log.d("AddNewRecord", "Size: " + sharedPreferences.getAll().size()); 

每当我尝试,我的偏好返回0,即使我有偏好活动保存14偏好。 我终于find了答案。 我在onCreate部分添加了这个选项。

getPreferenceManager()setSharedPreferencesName( “defaultPreferences”);

我添加了这个声明后,我保存的首选项按预期返回。 我希望这能帮助那些可能遇到同样问题的人。

这是对我来说最简单的程序:

 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 }