使用AlertDialog的注册表单不显示按钮

时间:2018-04-11 21:29:05

标签: android forms button alertdialog

我正在尝试使用AlertDialog和Layout Inflater创建一个注册表单。但是PositiveButton和NegativeButton没有显示,但是如果我评论form.setView(register_layout);,它就会变成一个简单的对话框并显示按钮。

这就是它的样子。

Registration form

我认为来自style.xml的颜色问题。因为当我不使用form.setView(register_layout);时,它会变成一个简单的对话框并显示按钮 enter image description here

private void showRegisterForm(){

    AlertDialog.Builder form = new AlertDialog.Builder(this);
    form.setTitle("REGISTER");
    form.setMessage("Register with email");

    LayoutInflater inflater = LayoutInflater.from(this);
    View register_layout = inflater.inflate(R.layout.register_form,null);

    final MaterialEditText editEmail = (MaterialEditText) register_layout.findViewById(R.id.editEmail);
    final MaterialEditText editName = (MaterialEditText) register_layout.findViewById(R.id.editName);
    final MaterialEditText editPassword = (MaterialEditText) register_layout.findViewById(R.id.editPassword);
    final MaterialEditText editPhone = (MaterialEditText) register_layout.findViewById(R.id.editPhone);

    form.setView(register_layout);

    form.setPositiveButton("REGISTER", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int i) {

            dialog.dismiss();

            if(TextUtils.isEmpty(editEmail.getText().toString())){
                Snackbar.make(baseLayout,"Please enter email", Snackbar.LENGTH_SHORT).show();
                return;
            }

            if(TextUtils.isEmpty(editPassword.getText().toString())){
                Snackbar.make(baseLayout,"Please enter password", Snackbar.LENGTH_SHORT).show();
                return;
            }

            if(TextUtils.isEmpty(editName.getText().toString())){
                Snackbar.make(baseLayout,"Please enter name", Snackbar.LENGTH_SHORT).show();
                return;
            }

            if(TextUtils.isEmpty(editPhone.getText().toString())){
                Snackbar.make(baseLayout,"Please enter phone number", Snackbar.LENGTH_SHORT).show();
                return;
            }
        }
    });



    form.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });

    AlertDialog build = form.create();
    build.show();

}

任何线索?

1 个答案:

答案 0 :(得分:0)

覆盖“构建”中的正面按钮:

AlertDialog build = form.create();

为:

build.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //do something...

            build.dismiss();
        }
    });