Android中的AlertDialog弹出框在被点击时, 无论点击哪个按钮都会关闭窗口。

但是有时候我们不需要它关闭,例如输入用户名和密码,输错了,提示重新输入。

那么怎么做到点击确定或者取消按钮不关闭对话框呢?

直接上代码

new AlertDialog.Builder(this)

.setTitle(R.string.SBCfgPasswordTitle)

.setView(passwdEditText)

.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialogInterface, int i) {

canCloseDialog(dialogInterface, false);//不关闭对话框

}

})

.setNeutralButton(android.R.string.cancel, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialogInterface, int i) {

//To change body of implemented methods use File | Settings | File Templates.

canCloseDialog(dialogInterface, true);//关闭对话框

}

})

.show();

// 关键部分在这里

private void canCloseDialog(DialogInterface dialogInterface, boolean close) {

try {

Field field = dialogInterface.getClass().getSuperclass().getDeclaredField("mShowing");

field.setAccessible(true);

field.set(dialogInterface, close);

} catch (Exception e) {

e.printStackTrace();

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐