我有一个布尔变量 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);
在主要
中仍然相同但!当我使用我的软件密钥返回MainActivity时,它会被保存 picture with software back key
知道我可以做什么,用另一个按钮保存它?
答案 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()