如何解决直到 editText 被填充时才会关闭弹出窗口的警报对话框按钮
我想制作一个警报对话框,以便在进一步操作之前向用户询问一些信息,因此我制作了带有两个 EditText 的警报对话框。但是,我找不到如何做到这一点,如果用户在 EditTexts 未完成时单击“否定按钮”,则对话框不会关闭。我尝试了一个 while 循环,但我的应用程序在执行此操作时冻结,所以我想这不是一个可行的解决方案。
我的警报对话框的代码如下所示:
public class CommandPopUp extends AppCompatDialogFragment {
private EditText editTextPhoneNumber;
private EditText editTextAddress;
private TextView title;
public CommandPopUp(Context context) {
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.pop_up_command,null);
builder.setView(view)
.setNegativeButton("Valider la commande",(dialog,which) -> {
String phoneNumber = editTextPhoneNumber.getText().toString();
String address = editTextAddress.getText().toString();
if(phoneNumber.length()!=10){
editTextPhoneNumber.setError("Veuillez entrer un numéro valide");
}
if(address.isEmpty()){
editTextAddress.setError("Veuillez entrer votre adresse");
}
//Don't do it till both above conditions are unverified
CartModel cart = null; //=....
deleteCart();
createCommand(cart,phoneNumber,address);
Toast.makeText(getContext(),"Votre commande a bien été prise en compte",Toast.LENGTH_SHORT).show();
})
.setPositiveButton("Annuler",which) -> dialog.dismiss());
editTextPhoneNumber = view.findViewById(R.id.editTextTel);
editTextAddress = view.findViewById(R.id.editTextAddress);
title = view.findViewById(R.id.titlePopUp);
title.setText(new StringBuilder("Votre commande"));
return builder.create();
}
private void deleteCart() {
FirebaseDatabase.getInstance()
.getReference("Cart")
.child("UNIQUE_USER_ID")
.removeValue();
}
private void createCommand(CartModel cart,String address,String phoneNumber) {
}
}
提前致谢
解决方法
代码不是很清楚,但如果我明白了,你只需要一个 if-else 语句。
首先检查第一个条件:
if(phoneNumber.length()!=10){
editTextPhoneNumber.setError("Veuillez entrer un numéro valide");
}
那么第二个条件:
if(address.isEmpty()){
editTextAddress.setError("Veuillez entrer votre adresse");
}
那么你需要一个 ELSE 条件,所以只有当两个条件都为假时才会执行。
CartModel cart = null; //=....
deleteCart();
createCommand(cart,phoneNumber,address);
Toast.makeText(getContext(),"Votre commande a bien été prise en compte",Toast.LENGTH_SHORT).show();
另外,我不记得它是否适用于 AlertDialog,但您可以简单地在 if 条件中添加一个 return 语句以停止检查。像这样:
if(phoneNumber.length()!=10){
editTextPhoneNumber.setError("Veuillez entrer un numéro valide");
return;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。