从另一个活动获得共享偏好

时间:2016-07-31 09:15:56

标签: java android android-activity sharedpreferences

这是我的设置活动,有一个开关:

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();
    }
}
 });

如何在主活动中获取此共享首选项值以根据值

执行某项工作

4 个答案:

答案 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);