我想向用户显示一个“确定”取消对话框,我想知道是否使用“确定”,“取消”,或者他是否选择通过单击屏幕上的其他位置或按“后退”按钮来关闭该对话框。
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
final EditText input = new EditText(MainActivity.this);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
// ok stuff
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
// cancel stuff
}
});
builder.setOnDismissListener(new DialogInterface.OnDismissListener()
{
@Override
public void onDismiss(DialogInterface dialog)
{
//dismiss stuff
}
});
builder.show();
这里的问题是,每当用户按下ok按钮时,关闭监听器就会立即触发。如果用户按下按钮,有没有办法不触发关闭监听器?
我确实意识到我可以使用布尔值标志,但是我希望实际上有一个优雅的解决方案。
我不是在寻找如何防止对话框被解雇的解决方案。我正在寻找有关如何防止按下确定按钮并关闭对话框时触发解雇侦听器的解决方案。
出于任何原因都会调用setOnDismissListener()。这意味着如果由于确定/取消按钮按下或屏幕触摸或返回按钮或主页按钮按下而导致对话框从屏幕上消失,setOnDismissListener()
则会被调用。
设置由于某种原因关闭对话框时将调用的回调。
如果您希望在所有情况下都忽略对话框,而不仅仅是取消对话框,请参阅setOnDismissListener
因此,解决您所提到的问题,请使用一些布尔标志进行检查并进行处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句