复选框首选项

时间:2015-10-12 20:30:39

标签: android android-activity

假设我在Android应用程序的首选项中有一个复选框首选项,它询问用户是否要锁定应用程序,当我们点击它时通过打开对话框要求提供凭据。现在的问题是,如果此时应用程序崩溃(通过强制关闭或按下主页键然后从最近的应用程序中删除它)复选框首选项仍保持检查状态并锁定我的应用程序,因为当我们点击复选框时,优先选择checkboxpreferncechanged( )被解雇并被检查。那我怎么能避免呢?我在checkboxpreferncechanged()事件中创建了该对话框。

1 个答案:

答案 0 :(得分:0)

在对话框成功返回之前,请勿更改首选项。

E.g:

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