Android:对话框关闭而不调用关闭
我有一个执行一些验证的对话框(如下)。问题是,显示 Toast 后对话框被关闭,而我没有调用关闭。我需要显示 toast 并保持对话框打开以更正错误。
final EditText txtName = new EditText(this);
AlertDialog.Builder dlgAdd = new AlertDialog.Builder(this)
.setTitle(R.string.create_category)
.setMessage(R.string.name)
.setView(txtName)
.setPositiveButton(R.string.ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String newCatName = txtName.getText().toString().trim(); // Converts the value of getText to a string.
if (newCatName != null && newCatName .length() ==0)
{
Toast.makeText(ManageCategories.this, R.string.err_name_required, 3500).show();
} else {
try {
boolean alreadyExists = mDatabaseAdapter.getCategoryIDs(newCatName).length > 0;// ids of cats with this name
if(alreadyExists) {
Toast.makeText(ManageCategories.this, R.string.categoryAlreadyExists, 3500).show();
} else {
mDatabaseAdapter.addCategory(newCatName);
}
}catch(Exception ex){
Toast.makeText(ManageCategories.this, R.string.error+':'+ ex.getLocalizedMessage(), 3500).show();
}
}
}
}).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
dlgAdd.show();
I have a dialog which performs some validation (below). Thee problem is, the dialog is dismissed after the Toast is displayed, without me calling dismiss. I need to show the toast and keep the dialog open to correct the error.
final EditText txtName = new EditText(this);
AlertDialog.Builder dlgAdd = new AlertDialog.Builder(this)
.setTitle(R.string.create_category)
.setMessage(R.string.name)
.setView(txtName)
.setPositiveButton(R.string.ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String newCatName = txtName.getText().toString().trim(); // Converts the value of getText to a string.
if (newCatName != null && newCatName .length() ==0)
{
Toast.makeText(ManageCategories.this, R.string.err_name_required, 3500).show();
} else {
try {
boolean alreadyExists = mDatabaseAdapter.getCategoryIDs(newCatName).length > 0;// ids of cats with this name
if(alreadyExists) {
Toast.makeText(ManageCategories.this, R.string.categoryAlreadyExists, 3500).show();
} else {
mDatabaseAdapter.addCategory(newCatName);
}
}catch(Exception ex){
Toast.makeText(ManageCategories.this, R.string.error+':'+ ex.getLocalizedMessage(), 3500).show();
}
}
}
}).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
dlgAdd.show();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我的猜测是,您没有像 Android 文档中提到的那样创建和显示对话框 http ://developer.android.com/guide/topics/ui/dialogs.html 使用 OnCreateDialog 函数
请按照文档中提到的方式进行操作,如果仍然不起作用,请告诉我们。
My guess is that you are not creating and showing dialog as mentioned in the Android docs here http://developer.android.com/guide/topics/ui/dialogs.html using OnCreateDialog functions
Please do as mentioned in the docs and let us know if it still does not work.
我认为无论你想要实现什么目标,AlertDialog.bilder 都是不可能实现的
相反,您可以创建
例子。
dialog_view.xml
帮助.java
}
I think whatever you are trying to achieve is not possible with AlertDialog.bilder
instead of that you can make
Example.
dialog_view.xml
Help.java
}