java - 我应该在 MainActivity 中定义 SharedPreferences 吗?

标签 java android android-activity sharedpreferences

我有四个Activity:MainActivityHomeActivitySecondActivityThirdActivity .

我使用 MainActivity 作为欢迎屏幕,我的应用程序从 HomeActivity 开始。我在 HomeActivity 中定义了我的 SharedPreferences:

外部OnCreate方法:

SharedPreferences settings;
SharedPreferences.Editor editor;

OnCreate内部:

settings = getSharedPreferences("app_settings", Context.MODE_APPEND);
editor = settings.edit();

我的问题是我的 SharedPreferences 仅适用于 HomeActivity。 我也想在 SecondActivity 中调用我的 sharedPreferences

我应该做什么?

最佳答案

您可以像这样使用 SharedPreferences 实现单例

public class SPManager {

    private static final String TAG = SPManager.class.getName();

    private static SPManager instance;

    private Context mContext;
    private SharedPreferences mPrefs;


    private static final String PREF_NAME = "com.package.app";

    private static final String KEY_NAME = "user_name";


    public static SPManager getInstance(Context context) {
        if (instance == null) {
            instance = new SPManager(context);
        }
        return instance;
    }

    private SPManager(Context context) {
        mContext = context;
        mPrefs = mContext.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
    }


//    Example
    public void addName(String name) {
        mPrefs.edit().putString(KEY_NAME, name).apply();
    }

    public String getName() {
        return mPrefs.getString(KEY_NAME, "John Doe");
    }
}

您也可以像这样使用这个单例:SPManager.getInstance(context).getName();

使用和更新都很简单。

希望能帮到你。

关于java - 我应该在 MainActivity 中定义 SharedPreferences 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44691549/

相关文章:

java - Recycler View 不调用 onBindviewHolder

java - 在 TabLayout + ViewPager2 中选择第三页作为默认值

java - 让应用程序运行在其他应用程序之上

java - Android 上的 Activity 方向会自动更改

java - Spring MVC 每次渲染相同的 View

java - 我无法向 Action 监听器添加按钮

java - 如何使用 JPA Criteria API 过滤 PostgreSQL 数组列?

java - 输入无效字符后,提出多项选择题的程序不会向用户显示答案

java - 如何在不创建字符串资源的情况下使用十进制数

java - 这里的 map 在移动设备中不显示