这是我的设置活动,有一个开关:
settings_inputs_switch = (Switch) findViewById(R.id.settings_inputs_switch);
settings_prefs = getSharedPreferences("settings_prefs", MODE_PRIVATE);
settings_inputs_switch.setChecked(settings_prefs.getBoolean("switch1_state",true ));
settings_inputs_switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (settings_inputs_switch.isChecked()){
settings_prefs = getSharedPreferences("settings_prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = settings_prefs.edit();
editor.putBoolean("switch1_state", true);
editor.commit();
}
else {
settings_prefs = getSharedPreferences("settings_prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = settings_prefs.edit();
editor.putBoolean("switch1_state", false);
editor.commit();
}
}
});
如何在主活动中获取此共享首选项值以根据值
执行某项工作答案 0 :(得分:0)
实现此目的的一种方法是在MainActivity
中读取onResume()
中偏好设定的值。每次从任何地方到达MainActivity
时,这都应该为您提供最新的价值。
要读取该值,您可以像编写它一样进行操作。在MainActivity
:
@Override
protected void onResume() {
SharedPreferences prefs = getSharedPreferences("settings_prefs", Context.MODE_PRIVATE);
boolean switchState1 = prefs.getBoolean("switch1_state", false);
// Do more stuff
}
(事实:" settings_prefs"是您应用的本地存储空间中的xml文件)
答案 1 :(得分:0)
如上所述,我使用的一个技巧是检查onResume()方法的变化
答案 2 :(得分:0)
您可以在任何活动中阅读这样的偏好阀。
SharedPreferences sharedPreference = getSharedPreferences("settings_prefs", Context.MODE_PRIVATE);
boolean value = sharedPreference.getBoolean("switch1_state",false);
答案 3 :(得分:0)
SharedPreferences getSharedPreferences(String name,int mode)
检索并保留首选项文件“名称”的内容,返回SharedPreferences,您可以通过它来检索和修改其值。只有一个SharedPreferences对象实例返回给任何相同名称的调用者,这意味着他们一旦完成就会看到彼此的编辑。
SharedPreferences sharedPreference = getSharedPreferences("settings_prefs",Context.MODE_PRIVATE);
boolean switchState= sharedPreference.getBoolean("switch1_state",false);