[英]Cancel switch on AlertDialog dismiss
所以基本上,當用戶點擊開關按鈕時,會彈出一個 AlertDialog,詢問他是否確定要這樣做……如果他說是,那么開關按鈕將……很好地切換到它應該做的另一側,但如果他說不。 .my switch button should remain position. The problem is that when I click switch button AlertDialog popup and if I click yes it works fine...但是當我單擊no時...我的開關按鈕卻更改為position。我的代碼:
if (binding.optionsSwitch.isChecked()) {
SharedPreferences.Editor editor = context.getSharedPreferences("save", Context.MODE_PRIVATE).edit();
editor.putBoolean("value", true);
editor.apply();
binding.optionsSwitch.setChecked(true);
AlertDialog.Builder dialogBuider = new AlertDialog.Builder(context);
dialogBuider.setMessage("Are you sure you want to delete the selected item?");
dialogBuider.setPositiveButton("Delete item", (dialog, which) -> {
viewModel.mtDeleteCumulativeResponse().observe(getViewLifecycleOwner(), objectObserver);
viewModel.deleteCumulative();
viewModel.getAssets();
dialog.dismiss();
});
dialogBuider.setNegativeButton("Quit", (dialog, id) -> {
dialog.cancel();
// binding.optionsSwitch.setChecked(true);
});
dialogBuider.setOnCancelListener(dialog -> {
binding.optionsSwitch.setChecked(false);
});
// Create and show the AlertDialog
AlertDialog alertDialog = dialogBuider.create();
alertDialog.show();
} else {
SharedPreferences.Editor editor = context.getSharedPreferences("save", Context.MODE_PRIVATE).edit();
editor.putBoolean("value", false);
editor.apply();
binding.optionsSwitch.setChecked(false);
AlertDialog.Builder dialogBuider = new AlertDialog.Builder(context);
dialogBuider.setMessage("Are you sure you want to delete the selected item?");
dialogBuider.setPositiveButton("Delete item", (dialog, which) -> {
dialog.dismiss();
});
dialogBuider.setNegativeButton("Quit", (dialog, id) -> {
dialog.cancel();
});
dialogBuider.setOnCancelListener(dialog -> {
binding.optionsSwitch.setChecked(true); });
// Create and show the AlertDialog
AlertDialog alertDialog = dialogBuider.create();
alertDialog.show();
和我的 xml:`
<Switch
android:id="@+id/options_switch"
android:layout_width="0dp"
android:layout_height="19dp"
android:layout_marginStart="8dp"
android:background="@color/bela"
android:padding="6dp"
android:paddingStart="26dp"
android:text="Detailed Item List"
android:textColor="#8fa2b0"
android:textSize="9sp"
android:checked="true"
app:layout_constraintBottom_toTopOf="@+id/rv_cash_acc_list"
app:layout_constraintEnd_toStartOf="@+id/list_details_swtch"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/rv_cash_acc_list"
app:layout_constraintWidth_percent="0.55"
tools:ignore="UseSwitchCompatOrMaterialXml" />`
實現此目的的最佳方法是添加 OnDismissListener 或 OnCancelListener。 像alertDialog.setOnCancelListener(dialog -> { binding.optionsSwitch.setChecked(false); });
if (binding.optionsSwitch.isChecked()) {
/*...*/
dialogBuider.setNegativeButton("Quit", (dialog, id) -> {
if (dialog != null) {
dialog.dismiss();
binding.optionsSwitch.setChecked(false);
//False here, you want to undo the check action in your switch.
}
});
/*...*/
}
else {
/*...*/
dialogBuider.setNegativeButton("Quit", (dialog, id) -> {
if (dialog != null) {
dialog.dismiss();
binding.optionsSwitch.setChecked(true);
//Here should be true, now is not checked but you want to undo it and check it.
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.