通常情况下我们创建的AlerDialog代码如下
代码语言:javascript复制AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("标题")
.setMessage("内容")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
但这样我们点击确定按钮的时候AlertDialog会默认消失掉。 但如果我们在弹窗里添加一个EditText输入框,判断如果输入框为空的时候弹提示而告诉用户输入框为空,请输入内容。 这种情况就需要保留AlertDialog让它不消失。
- 解决办法如下:
- 首先我们将PositiveButton的监听设置为null
.setPositiveButton("确定", null)
- 然后我们拿到PositiveButton,并由我们自己来实现监听即可是实现AlertDialog按钮不消失的需求
- 当我们在自己定义的监听里需要让AlertDialog消失时,调用alertdialog.cancle()即可
整体代码如下
代码语言:javascript复制 //创建输入框
EditText et = new EditText(this);
AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle("备注")
.setMessage("经度:" lng "纬度:" lat)
//添加输入框
.setView(et)
.setPositiveButton("确定", null)
.setNegativeButton("取消", null)
.show();
//拿到按钮并判断是否是POSITIVEBUTTON,然后我们自己实现监听
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String input = et.getText().toString();
if (input.equals("")) {
Toast.makeText(getApplicationContext(), "内容不能为空!" input, Toast.LENGTH_LONG).show();
return;
} else {
//让AlertDialog消失
alertDialog.cancel();
}
}
});