榊覔奚奚 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 用lstm来预测股票价格
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上