返回后变量不会改变

时间:2018-02-09 19:48:41

标签: java android android-studio-3.0

我有一个布尔变量 public static boolean isInDarkTheme 但是当我尝试更改我的设置活动中的值时,它只会暂时改变。 我这样做了:

                if (on) {
                //Do something when Switch button is on/checked
                MainActivity.isInDarkTheme = true;
            } else {
                //Do something when Switch is off/unchecked
                MainActivity.isInDarkTheme = false;
            }
            Log.d("DarkTheme", "SETTINGS " + MainActivity.isInDarkTheme);

在我的设置中,变量被更改但是当我回到主要的时候 我用这个创建的箭头:

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

picture with this button

主要

中仍然相同

但!当我使用我的软件密钥返回MainActivity时,它会被保存 picture with software back key

知道我可以做什么,用另一个按钮保存它?

2 个答案:

答案 0 :(得分:0)

您的变量将不会被保存,并且在活动被销毁后将由垃圾收集器收集。

你必须使用像SharedPreferences这样的东西。

保存变量

SharedPreferences sharedPrefrences = getSharedPreferences("pref_name", MODE_PRIVATE);
        sharedPrefrences.edit().putBoolean("isDarkTheme", true).apply();

加载

SharedPreferences sharedPrefrences = getSharedPreferences("pref_name", MODE_PRIVATE);
                                           //   key   ,   default value
        boolean isDark= sharedPrefrences.getBoolean("isDarkThem", false);

了解SharedPreferences here

答案 1 :(得分:0)

最可能的原因是两个活动都被不同的类加载器加载,导致MainActivity活动中Settings与您“看到”的活动不同MainActivity在你的其他活动中。你可以通过调用MainActivity.class.getClassLoader()

将类附件“附加”记录到{{1}}来找到它。