visual uso tipos opciones los elementos dialogo cuadros cuadro como cerrar abrir android dialog showdialog

android - uso - ¿Cómo comprobar si se muestra el cuadro de diálogo o mostrar varios cuadros de diálogo del mismo tipo?



tipos de cuadros de dialogo (3)

Estoy administrando diálogos por showDialog / dismissDialog / removeDialog .

Quiero:

Muestra varios cuadros de diálogo en una especie de pila:

a) El primer cuadro de diálogo se muestra usando showDialog(DIALOG_TYPE)

b) Los siguientes diálogos se muestran en la parte superior del cuadro de diálogo existente

Ahora solo puedo mostrar el primer cuadro de diálogo usando showDialog y luego los siguientes diálogos son ignorados.

Mostrar el último diálogo:

a) El primer cuadro de diálogo se muestra usando showDialog(DIALOG_TYPE)

b) Verificaciones de la aplicación si se muestra un cuadro de diálogo, se cierra el cuadro de diálogo (si se muestra) y se abre un nuevo cuadro de diálogo.

¿Hay alguna posibilidad de alcanzar una de las soluciones anteriores?


Dialog tiene un método isShowing () que debería devolver si el diálogo está actualmente visible. Entonces puede usar eso para ver si se muestra un diálogo y ocultarlo con dismissDialog (). Solo tiene que mantener una referencia a los cuadros de diálogo que crea en onCreateDialog ().


Puede usar el indicador para verificar si el diálogo está abierto o no y, de acuerdo con el valor del indicador, puede hacer lo que quiera. Como yo lo hice. Solo tengo un diálogo, pero cuando toco otro EditText y mi cuadro de diálogo se abre, debe cerrarse primero y luego volver a abrir con animación.

Fragmento de código:

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; }

Intenta alterar este código en tu camino. Espero que esto le pueda ayudar. Gracias.


Dialog implementa DialogInterface que tiene OnShowListener .

Por lo tanto, puedes usar un código como este:

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 } });