我正在尝试使用AlertDialog和Layout Inflater创建一个注册表单。但是PositiveButton和NegativeButton没有显示,但是如果我评论form.setView(register_layout);
,它就会变成一个简单的对话框并显示按钮。
这就是它的样子。
我认为来自style.xml的不颜色问题。因为当我不使用form.setView(register_layout);
时,它会变成一个简单的对话框并显示按钮
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();
}
任何线索?
答案 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();
}
});