Android 复选框首选项

Android 复选框首选项,android,android-activity,Android,Android Activity,假设我在我的android应用程序首选项中有一个复选框Preference,它询问用户是否想锁定应用程序,当我们点击它时,会打开一个对话框来询问凭据。现在的问题是,如果此时应用程序崩溃(通过强制关闭或按home键,然后将其从最近的应用程序中删除),复选框首选项将保持选中状态,并锁定我的应用程序,因为当我们单击复选框首选项时,将触发复选框首选项更改()并将其选中。那我怎么能避免呢?我已经在CheckboxPreferenceChanged()事件中创建了该对话框。在对话框成功返回之前,不要更改首选

假设我在我的android应用程序首选项中有一个复选框Preference,它询问用户是否想锁定应用程序,当我们点击它时,会打开一个对话框来询问凭据。现在的问题是,如果此时应用程序崩溃(通过强制关闭或按home键,然后将其从最近的应用程序中删除),复选框首选项将保持选中状态,并锁定我的应用程序,因为当我们单击复选框首选项时,将触发复选框首选项更改()并将其选中。那我怎么能避免呢?我已经在CheckboxPreferenceChanged()事件中创建了该对话框。

在对话框成功返回之前,不要更改首选项

例如:

checkBoxPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
  @Override
  public boolean onPreferenceChange(Preference preference, final Object newValue) {
    if (!(newValue instanceof Boolean)) return false;

    new AlertDialog.Builder(getContext())
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
            // Check if credentials ok and save the preference
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
            prefs.edit()
                .putBoolean("CHECKBOX", (Boolean) newValue)
                .commit();
          }
        });
    // By returning false we don't update the preference
    return false;
  }
});