【问题标题】:Android Shared Preferences Not ComittingAndroid Sharedpreferences 未提交
【发布时间】:2015-04-26 19:18:37
【问题描述】:

我有一个正在应用程序中切换的开关。当我关闭应用程序时,我希望保存最后一个切换状态。当应用程序打开时,它将切换状态设置为上次保存的状态。我正在使用 SharedPreferences 来执行此操作。出于某种原因,我的偏好没有保存。我查看了我的代码,没有发现任何问题。

// Set some preferences
    Preferences = getApplicationContext().getSharedPreferences(getPackageName(), 0);

    // Set the monitor toggle to on or off
    final SwitchCompat monitorToggle = (SwitchCompat)findViewById(R.id.monitorToggleButton);
    boolean monitorStatus = Preferences.getBoolean("monitorStatus", true);
    monitorToggle.setChecked(monitorStatus);

    // Setup the monitor toggle view
    LinearLayout monitorToggleView = (LinearLayout)findViewById(R.id.monitorToggle);
    monitorToggleView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            monitorToggle.toggle();
            Preferences.edit().putBoolean("monitorStatus", monitorToggle.isChecked());
            Preferences.edit().commit();
        }
    });

“Preferences”变量是类中的私有变量

private SharedPreferences Preferences;

【问题讨论】:

标签: java android android-activity sharedpreferences


【解决方案1】:

试试这个:

Editor editor = Preferences.edit();
editor.putBoolean("monitorStatus", false);
editor.commit();

【讨论】:

  • 这个答案和上一个答案都有效!谢谢!
【解决方案2】:

尝试使用

SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(YourActivity.this);
SharedPreferences.Editor editor = prefs.edit();

editor.putBoolean("monitorStatus", monitorToggle.isChecked());
editor.commit();

【讨论】:

    【解决方案3】:

    其他答案是正确的,但没有解释错误是两次调用edit(),即您创建了第二个Editor,没有进行任何更改并提交。您从未将更改提交给第一个 Editor

    而不是这个:

    Preferences.edit().putBoolean("monitorStatus", monitorToggle.isChecked());
    Preferences.edit().commit();
    

    你可以这样做:

    Preferences.edit().putBoolean("monitorStatus", monitorToggle.isChecked()).commit();
    

    无需将Editor 存储在变量中。

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 2018-08-30
      • 2012-05-30
      • 1970-01-01
      • 2013-02-26
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      相关资源
      最近更新 更多