如果 EditText 为空,则禁用关闭 AlertDialog
Disable closing AlertDialog if EditText is empty
我有带有 EditText 的警告对话框。如果用户按下肯定按钮并且 EditText 为空,则关闭警告对话框。现在我想在用户将编辑文本留空时禁用关闭。怎么做?
这是警报对话框的代码:
@Override
public void onClick(View v) {
AlertDialog.Builder wndInput = new AlertDialog.Builder(
MainActivity.this);
final EditText txtEditScraps = new EditText(MainActivity.this);
txtEditScraps.setInputType(InputType.TYPE_CLASS_PHONE);
wndInput.setTitle("Number of scraps:");
wndInput.setCancelable(false);
wndInput.setNegativeButton("CANCEL",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
wndInput.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
wndInput.setView(txtEditScraps);
wndInput.create().show();
}
您可以像这样在 onClick() 方法中检查条件:
wndInput.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String etContent=txtEditScraps.getText();
if(!etContent.isEmpty()){
wndInput.dismiss();
}
else{// do nothing or give editText is empty}
}
});
这样试试
final AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("My dialog")
.setPositiveButton(android.R.string.ok, null)
.setNegativeButton(android.R.string.cancel, null)
.create();
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button button = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "Now dialog will not close", Toast.LENGTH_LONG).show();
//alertDialog.dismiss();
}
});
}
});
alertDialog.show();
您需要获取 EditText
的文本,如果 EditText
值的长度为空,则禁用您的 setPositiveButton
事件。
你可以这样做。
@Override
public void onClick(View v) {
AlertDialog.Builder wndInput = new AlertDialog.Builder(
MainActivity.this);
final EditText txtEditScraps = new EditText(MainActivity.this);
txtEditScraps.setInputType(InputType.TYPE_CLASS_PHONE);
wndInput.setTitle("Number of scraps:");
wndInput.setCancelable(false);
wndInput.setNegativeButton("CANCEL",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
wndInput.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String _edtValue = txtEditScraps.getText().toString().trim();
if (_edtValue.length()==0&&_edtValue==null&&_edtValue.equalsIgnoreCase("")) {
//do nothing.
} else {
// dismiss your alert.
}
}
});
wndInput.setView(txtEditScraps);
wndInput.create().show();
}
@Override
public void onClick(View v) {
AlertDialog.Builder wndInput = new AlertDialog.Builder(
MainActivity.this);
final EditText txtEditScraps = new EditText(MainActivity.this);
txtEditScraps.setInputType(InputType.TYPE_CLASS_PHONE);
wndInput.setTitle("Number of scraps:");
wndInput.setCancelable(false);
wndInput.setNegativeButton("CANCEL",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
wndInput.dismiss();
}
});
wndInput.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if(txtEditScraps.getText().toString().trim()=="") {
txtEditScraps.requestFocus(true);
}
else {
wndInput.dismiss();
}
}
});
wndInput.setView(txtEditScraps);
wndInput.create().show();
}
首先对代码的最后两行做一些小改动..
wndInput.setView(txtEditScraps);
final AlertDialog alertDialog = wndInput.create();
alertDialog.show();
意味着您只需参考警报对话框..然后添加以下代码。
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean wantToCloseDialog = (txtEditScraps.getText().toString().trim().isEmpty());
// if EditText is empty disable closing on possitive button
if (!wantToCloseDialog)
alertDialog.dismiss();
}
});
我有带有 EditText 的警告对话框。如果用户按下肯定按钮并且 EditText 为空,则关闭警告对话框。现在我想在用户将编辑文本留空时禁用关闭。怎么做?
这是警报对话框的代码:
@Override
public void onClick(View v) {
AlertDialog.Builder wndInput = new AlertDialog.Builder(
MainActivity.this);
final EditText txtEditScraps = new EditText(MainActivity.this);
txtEditScraps.setInputType(InputType.TYPE_CLASS_PHONE);
wndInput.setTitle("Number of scraps:");
wndInput.setCancelable(false);
wndInput.setNegativeButton("CANCEL",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
wndInput.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
wndInput.setView(txtEditScraps);
wndInput.create().show();
}
您可以像这样在 onClick() 方法中检查条件:
wndInput.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String etContent=txtEditScraps.getText();
if(!etContent.isEmpty()){
wndInput.dismiss();
}
else{// do nothing or give editText is empty}
}
});
这样试试
final AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("My dialog")
.setPositiveButton(android.R.string.ok, null)
.setNegativeButton(android.R.string.cancel, null)
.create();
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button button = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "Now dialog will not close", Toast.LENGTH_LONG).show();
//alertDialog.dismiss();
}
});
}
});
alertDialog.show();
您需要获取 EditText
的文本,如果 EditText
值的长度为空,则禁用您的 setPositiveButton
事件。
你可以这样做。
@Override
public void onClick(View v) {
AlertDialog.Builder wndInput = new AlertDialog.Builder(
MainActivity.this);
final EditText txtEditScraps = new EditText(MainActivity.this);
txtEditScraps.setInputType(InputType.TYPE_CLASS_PHONE);
wndInput.setTitle("Number of scraps:");
wndInput.setCancelable(false);
wndInput.setNegativeButton("CANCEL",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
wndInput.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
String _edtValue = txtEditScraps.getText().toString().trim();
if (_edtValue.length()==0&&_edtValue==null&&_edtValue.equalsIgnoreCase("")) {
//do nothing.
} else {
// dismiss your alert.
}
}
});
wndInput.setView(txtEditScraps);
wndInput.create().show();
}
@Override
public void onClick(View v) {
AlertDialog.Builder wndInput = new AlertDialog.Builder(
MainActivity.this);
final EditText txtEditScraps = new EditText(MainActivity.this);
txtEditScraps.setInputType(InputType.TYPE_CLASS_PHONE);
wndInput.setTitle("Number of scraps:");
wndInput.setCancelable(false);
wndInput.setNegativeButton("CANCEL",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
wndInput.dismiss();
}
});
wndInput.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if(txtEditScraps.getText().toString().trim()=="") {
txtEditScraps.requestFocus(true);
}
else {
wndInput.dismiss();
}
}
});
wndInput.setView(txtEditScraps);
wndInput.create().show();
}
首先对代码的最后两行做一些小改动..
wndInput.setView(txtEditScraps);
final AlertDialog alertDialog = wndInput.create();
alertDialog.show();
意味着您只需参考警报对话框..然后添加以下代码。
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean wantToCloseDialog = (txtEditScraps.getText().toString().trim().isEmpty());
// if EditText is empty disable closing on possitive button
if (!wantToCloseDialog)
alertDialog.dismiss();
}
});