如何检查对话框是否显示或显示同一类型的多个对话框?
-
01-10-2019 - |
题
我正在管理对话框 showDialog
/dismissDialog
/removeDialog
.
我想要:
显示几个堆栈中的几个对话框:
a)使用的第一个对话框使用 showDialog(DIALOG_TYPE)
b)下一个对话框显示在现有对话框的顶部
现在我只能使用第一个对话框来使用 showDialog
然后忽略下一个对话框。
显示最后对话框:
a)使用的第一个对话框使用 showDialog(DIALOG_TYPE)
b)应用程序检查是否显示了对话框,关闭对话框(如果显示)并打开一个新的对话框。
是否有可能实现上述解决方案之一?
解决方案
对话框有一个 iSshowing() 如果当前可见对话框,则应返回的方法。因此,您可以使用它来查看对话框是否正在显示并使用diverdialog()隐藏。您只需要对您在OnCreatedialog()中创建的对话框进行引用。
其他提示
您可以使用标志检查对话框是否打开,并且根据标志值,您可以做任何您想做的事情。像我一样。我只有一个对话框,但是当我触摸另一个对话时 EditText
如果打开我的对话框,则应首先关闭,然后通过动画重新打开。
代码段:
private EditText mEditText, mEditCode;
private Dialog mDialog;
private int mClicked = 0;
private boolean isShown = false;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mEditText = (EditText)findViewById(R.id.EnterValue);
mEditText.setClickable(true);
mEditText.setOnClickListener(this);
mEditCode = (EditText)findViewById(R.id.EnterCode);
mEditCode.setClickable(true);
mEditCode.setOnClickListener(this);
}
public void onClick(View nView)
{
switch (nView.getId())
{
case R.id.EnterValue:
mClicked = R.id.EnterValue;
mEditText.requestFocus();
mEditText.setFocusableInTouchMode(false);
mEditText.setEnabled(true);
mEditText.setSelection(mEditText.getText().toString().trim().length());
if(isShown)
{
mDialog.dismiss();
showInfoDialog();
}
else
{
showInfoDialog();
}
break;
case R.id.EnterCode:
mClicked = R.id.EnterCode;
mEditCode.requestFocus();
mEditCode.setFocusableInTouchMode(false);
mEditCode.setEnabled(true);
mEditCode.setSelection(mEditCode.getText().toString().trim().length());
if(isShown)
{
mDialog.dismiss();
showInfoDialog();
}
else
{
showInfoDialog();
}
break;
}
}
private boolean showInfoDialog()
{
mDialog = new Dialog(CustomKeyboardNotLikeAndroidActivity.this, R.style.PauseDialog);
mDialog.setContentView(R.layout.keyboard);
mDialog.getWindow().getAttributes().windowAnimations = R.style.PauseDialogAnimation;
mDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
mDialog.setCancelable(true);
isShown = true;
mDialog.show();
return false;
}
尝试以您的方式更改此代码。希望这可以帮到你。谢谢。
Dialog
工具 DialogInterface
其中有 OnShowListener
.
因此,您可以使用这样的代码:
Dialog dialog = new Dialog(context);
// ... set all things considering your dialog
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
// do something when your dialog is shown
}
});
不隶属于 StackOverflow