如何检索从 Android 中的另一个 activity 保存的 SharedPreferences?

How to retrive SharedPreferences, which where saved from another activity in Android?

我的应用程序中有情况。让我们进行两个活动 A 和 B 。 A 是主要的 activity(在打开应用程序时启动)。 B 是从 A 开始的。我在 B 中有一个复选框,使用 isChecked() 方法的布尔值被分配给一个名为值的布尔值并保存到 SharedPreferences。保存到 SharedPreferences 的代码是

SharedPreferences sharedPreferences=PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putBoolean("value", value);
editor.commit();

现在我想在打开应用程序期间从 activity A(即 Main activity)读取这个值,并且根据这个值我需要执行额外的操作。

我用来检索值的代码是

SharedPreferences sharedPreference=PreferenceManager.getDefaultSharedPreferences(this);
boolean value=sharedPreferences.getBoolean("value", false);

问题是我无法在 activity A.Since 中检索此值我在重新启动应用程序时选中复选框的次数 CheckBox 在 activity B 中保持未选中状态。问题是什么?

您可以创建单例 class 来管理应用偏好(不要忘记制作您自己的应用单例 class):

public final class PreferencesUtil {

    private PreferencesUtil() {}

    public static float getFloatValue(String key, float defaultValue) {
        SharedPreferences preferences = getSharedPreferences();
        return preferences.getFloat(key, defaultValue);
    }

    public static void setFloatValue(String key, float value) {
        SharedPreferences preferences = getSharedPreferences();
        Editor editor = preferences.edit();
        editor.putFloat(key, value);
        editor.commit();
    }

    public static long getLongValue(String key, long defaultValue) {
        SharedPreferences preferences = getSharedPreferences();
        return preferences.getLong(key, defaultValue);
    }

    public static void setLongValue(String key, long value) {
        SharedPreferences preferences = getSharedPreferences();
        Editor editor = preferences.edit();
        editor.putLong(key, value);
        editor.commit();
    }

    public static void setIntValue(String key, int value) {
        SharedPreferences preferences = getSharedPreferences();
        Editor editor = preferences.edit();
        editor.putInt(key, value);
        editor.commit();
    }


    public static int getIntValue(String key, int defaultValue) {
        SharedPreferences preferences = getSharedPreferences();
        return preferences.getInt(key, defaultValue);
    }

    public static void setStringValue(String key, String value) {
        SharedPreferences preferences = getSharedPreferences();
        Editor editor = preferences.edit();
        editor.putString(key, value);
        editor.commit();
    }

    public static String getStringValue(String key) {
        SharedPreferences preferences = getSharedPreferences();
        return preferences.getString(key, null);
    }

    public static String getStringValue(String key, String defValue) {
        SharedPreferences preferences = getSharedPreferences();
        return preferences.getString(key, defValue);
    }

    public static boolean getBooleanValue(String key, boolean defaultValue) {
        SharedPreferences preferences = getSharedPreferences();
        return preferences.getBoolean(key, defaultValue);
    }

    public static void setBooleanValue(String key, boolean value) {
        SharedPreferences preferences = getSharedPreferences();
        Editor editor = preferences.edit();
        editor.putBoolean(key, value);
        editor.commit();
    }

    public static void clearValue(String key) {
        SharedPreferences preferences = getSharedPreferences();
        Editor editor = preferences.edit();
        editor.remove(key);
        editor.commit();
    }

    private static SharedPreferences getSharedPreferences() {
        return YourAppSingleton.getInstance().getSharedPreferences(YourAppSingleton.getInstance().getString(R.string.app_name), Context.MODE_PRIVATE);
    }
}

申请class:

public class YourAppSingleton extends Application {

    private static YourAppSingleton instance = null;

    public void onCreate() { 
        super.onCreate();
        instance = this;
    }

    public static YourAppSingleton getInstance() {
        return instance;
    }
}