android 在没有上下文的情况下访问SharedPreferences

vfhzx4xs  于 2023-02-02  发布在  Android
关注(0)|答案(4)|浏览(179)

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

n7taea2i

n7taea2i1#

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

58wvjzkj

58wvjzkj2#

应用类别:

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());
kdfy810k

kdfy810k3#

我们可以在具有Getter和Setter的helper类中使用SharedPreference示例,而不涉及上下文说明here
主要活动中添加

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

然后在PreferenceHelper中使用set和get作为

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,"");
}
wnrlj8wa

wnrlj8wa4#

Oded的回答让我得到了实用类中回调方法所需要的东西,在我的例子中,我需要一个Kotlin版本,看起来像这样。
舱单

android:name=".SGAutoApp"

SGAutoApp.kt

class SGAutoApp : Application() {
    companion object {
        fun getAppContext(): Context {
            return this.getAppContext()
        }
    }
}

就像下面我的实用类回调方法一样。

val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(SGAutoApp.getAppContext())

相关问题