您的位置:首页 > 移动开发 > Android开发

AlertDialog点击按钮后不消失

2017-07-30 17:07 344 查看
在Android中点击dialog中的确定或者取消时,就是不调用dismiss()方法,dialog还是会消失,那要是我们要在点击后处理一些逻辑,就希望点击后不消失,可以按以下方式做。


//添加数据
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
//设置弹出窗
final AlertDialog mDialog = new AlertDialog.Builder(MainActivity.this)
.setPositiveButton("确定", null)
.setNegativeButton("取消", null).create();

View view = View.inflate(MainActivity.this, R.layout.layout_dialog_edit, null);
final EditText etAdd = (EditText) view.findViewById(R.id.et_add);
mDialog.setView(view);

mDialog.setCancelable(false);   //设置点击空白区域不消失

mDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
//确定按键
Button positiveButton = mDialog.getButton(AlertDialog.BUTTON_POSITIVE);
positiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (TextUtils.isEmpty(etAdd.getText().toString())) {
Utils.Toast_long(MainActivity.this, "请输入正确的小区名字");

} else {
if (dbUtil.getAreaByName(etAdd.getText().toString())) {

Utils.Toast_long(MainActivity.this, "小区" + etAdd.getText().toString() + "已经存在,请不要重复添加");
} else {

//保存数据并刷新页面
dbUtil.saveArea(etAdd.getText().toString(), null);
area.clear();
area.addAll(dbUtil.getArea());
myGridAdapter.notifyDataSetChanged();
Toast.makeText(MainActivity.this, etAdd.getText().toString(), Toast.LENGTH_SHORT).show();
mDialog.dismiss();
}

}
}
});

//取消按键
Button negativeButton = mDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
negativeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDialog.dismiss();
}
});
}
});

mDialog.show();


就是在setPositiveButton和setNegativeButton中传入null,然后在下面获取button。


Button positiveButton = mDialog.getButton(AlertDialog.BUTTON_POSITIVE);


这可以参见API文档中,AlertDialog中有getButton(int whichButton)方法,可以得到AlertDialog中的button。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android