【问题标题】:get shared preference from another activity从另一个活动中获得共同的偏好
【发布时间】:2016-07-31 09:15:56
【问题描述】:

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

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

我怎样才能在主要活动中获得这个共享偏好值来根据该值做一些工作??

【问题讨论】:

    标签: java android android-activity sharedpreferences


    【解决方案1】:

    实现此目的的一种方法是在您的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 文件)

    【讨论】:

      【解决方案2】:

      如上所述,我使用的一个技巧是检查 onResume() 方法的变化

      【讨论】:

        【解决方案3】:

        您可以在任何活动中读取这样的偏好阀。

        SharedPreferences sharedPreference = getSharedPreferences("settings_prefs", Context.MODE_PRIVATE);
        boolean value = sharedPreference.getBoolean("switch1_state",false);
        

        【讨论】:

          【解决方案4】:

          SharedPreferences getSharedPreferences(字符串名称,int 模式)

          检索并保存首选项文件“name”的内容,返回一个 SharedPreferences,您可以通过它检索和修改其值。仅将 SharedPreferences 对象的一个​​实例返回给任何同名调用者,这意味着他们将在进行编辑后立即看到彼此的编辑。

          SharedPreferences sharedPreference = getSharedPreferences("settings_prefs",Context.MODE_PRIVATE);
          
          boolean switchState= sharedPreference.getBoolean("switch1_state",false);
          

          【讨论】:

            猜你喜欢
            • 2014-03-28
            • 1970-01-01
            • 2011-12-30
            • 1970-01-01
            • 2016-07-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多