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

时间:2011-09-21 08:35:11

标签: android sharedpreferences

我创建了一个存储用户设置的共享首选项活动,现在我想获取活动或普通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中相同的关键字。

请提供解决方案。

4 个答案:

答案 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, ""));