榊覔奚奚 2020-07-10 21:39 采纳率: 100%
浏览 241
已采纳

Android项目中,AlertDialog显示顺序不正确

public void onClick(View v) {
                // 获取数据

                // 保存除了密码之外的其他信息

                if (!password01.equals("")) {
                    if (password01.equals(password02)) {
                        if (password01.length() >= 6 && password01.length() <= 18) {
                            // 获取到密码,并且符合更改密码的操作条件,进行对密码的加密,并将新密码存储到之前的用户数据模型中
                            }
                        } else {
                            // 提示密码长度不足并阻止提交操作
                        }
                    } else {
                        // 提示两次密码不一致并阻止提交操作
                    }
                } else {
                    // 提示密码为空并询问是否继续提交,如果用户选择提交,就直接执行,不提交则阻止提交操作
                }
                // 在这里进行更新数据库操作,并提示用户修改成功
            }
        });

在用户不输入密码的情况下,理想中应该是先提示不会进行改密码操作,询问用户是要进行改密码还是继续,但是这里却先是显示了修改成功,再询问用户要不要改密码,请问应该怎么调整一下这两个AlertDialog的顺序?

源码在底下

public void onClick(View v) {
                // 获取需要修改的数据
                String username = txbUsername.getText().toString();
                String password01 = txbPassword01.getText().toString();
                String password02 = txbPassword02.getText().toString();

                // 利用二元运算符对性别进行设置
                Sex sex = rogSex.getCheckedRadioButtonId() == R.id.rdoMale ? Sex.MALE : Sex.FEMALE;
                String region = cmbRegion.getSelectedItem().toString();

                // 保存除了密码之外的其他信息
                helper.openWriteLink();
                userTmp = helper.queryById(uuid);
                userTmp.setUsername(username);
                userTmp.setSex(sex);
                userTmp.setRegion(region);

                if (!password01.equals("")) {
                    if (password01.equals(password02)) {
                        if (password01.length() >= 6 && password01.length() <= 18) {
                            try {
                                userTmp.setPassword(EncryptUtil.md5(password01));
                            } catch (Exception e) {
                                Toast.makeText(thisContext, "出现了问题", Toast.LENGTH_SHORT).show();
                                Log.e("ERROR", "error --- >" + e.toString());
                            }
                        } else {
                            AlertDialog alert = AlertDialogUtil.initAlertDialog(thisContext,
                                    "密码长度错误!", "您的密码长度应该在6-18位之间,请您重新输入", R.drawable.error);
                            alert.setButton(DialogInterface.BUTTON_POSITIVE, "好的", (DialogInterface.OnClickListener) null);
                            alert.show();
                            return;
                        }
                    } else {
                        AlertDialog alert = AlertDialogUtil.initAlertDialog(thisContext,
                                "两次密码不一致!", "您输入的两次密码不一致,请重新输入", R.drawable.error);
                        alert.setButton(DialogInterface.BUTTON_POSITIVE, "好的", (DialogInterface.OnClickListener) null);
                        alert.show();
                        return;
                    }
                } else {
                    AlertDialog alertNoPassword = AlertDialogUtil.initAlertDialog(thisContext,
                            "密码为空!", "由于密码为空,则当前不进行更新密码操作", R.drawable.caution_filled);
                    alertNoPassword.setButton(DialogInterface.BUTTON_POSITIVE, "好的", (DialogInterface.OnClickListener) null);
                    alertNoPassword.setButton(DialogInterface.BUTTON_NEGATIVE, "改密", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            return;
                        }
                    });
                    alertNoPassword.show();
                }
                helper.update(userTmp, String.format("uuid = '%s'", uuid));
                AlertDialog alert = AlertDialogUtil.initAlertDialog(thisContext,
                        "数据修改成功!", "恭喜您成功完成了操作!", R.drawable.benefits);
                alert.setButton(DialogInterface.BUTTON_POSITIVE, "好的", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String id = shared.getString("uuid", "");
                        currentUser = helper.queryById(id);
                        String[] arrayRegions = getResources().getStringArray(R.array.array_regions);
                        txbUsername.setText(currentUser.getUsername());
                        switch (currentUser.getSex()) {
                            case MALE:
                                rogSex.check(R.id.rdoMale);
                                break;
                            case FEMALE:
                                rogSex.check(R.id.rdoFemale);
                                break;
                        }
                        txbPassword01.setHint("您已经设置好了密码,需要修改密码请在两个密码框输入您的新密码!");
                        txbPassword02.setHint("您已经设置好了密码,需要修改密码请在两个密码框输入您的新密码!");
                        txbPassword01.setText("");
                        txbPassword02.setText("");
                        int position = -1;
                        for (int i = 0; i < arrayRegions.length; i++) {
                            if (currentUser.getRegion().equals(arrayRegions[i])) {
                                position = i;
                                break;
                            }
                        }
                        cmbRegion.setSelection(position == -1 ? 0 : position);
                    }
                });
                alert.show();
            }
        });

  • 写回答

1条回答 默认 最新

  • 代码的灵魂是bug! 2020-07-11 11:50
    关注

    alertNoPassword.show();这个后面加一个return

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 C# datagridview 栏位进度
  • ¥15 vue3页面el-table页面数据过多
  • ¥100 vue3中融入gRPC-web
  • ¥15 kali环境运行volatility分析android内存文件,缺profile
  • ¥15 写uniapp时遇到的问题
  • ¥15 vs 2008 安装遇到问题
  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改