17

我已阅读问题:thisthis关于阅读共享偏好。但是他们仍然需要 Context 来访问 SharedPreferences。我想知道如何在没有上下文的情况下访问 SharedPreferences。提前致谢

4

3 回答 3

15

我通过首先检索 ApplicationContext ( this )来解决我的问题,然后使用该上下文来获取 SharedPreferences。感谢 K-ballo。

于 2012-06-29T21:09:00.177 回答
7

应用类:

import android.app.Application;
import android.content.Context;

public class MyApplication extends Application {

    private static Context mContext;

    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
    }

    public static Context getAppContext() {
        return mContext;
    }

}

在 AndroidManifest 中声明应用程序:

<application android:name=".MyApplication"
    ...
/>

用法:

PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext());
于 2017-10-29T15:01:26.483 回答
4

我们可以在具有 Getter 和 Setter 的帮助器类中使用 SharedPreference 实例,而不涉及此处解释的上下文

MainActivity添加

public static SharedPreferences preferences;
preferences = getSharedPreferences( getPackageName() + "_preferences", MODE_PRIVATE);

然后在PreferenceHelper中使用 set 并获取为

public static void setName(String value) {
    MainActivity.preferences.edit().putString(KEY_DEMO_NAME, value ).commit();
}
public static String getName() {
    return MainActivity.preferences.getString(KEY_DEMO_NAME,"");
}
于 2018-05-03T10:45:56.640 回答