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