ventana studio reinicio reinicie que personalizado movil girar evitar emergente ejemplo dialogo cuadro como activity java android android-activity dialog touch

java - studio - Evitar que el diálogo de actividad de Android se cierre al tocar el exterior



evitar reinicio activity android (18)

Al usar el diálogo como una actividad en onCreate, agregue esto

setFinishOnTouchOutside(false);

Tengo una actividad que usa el estilo Theme.Dialog de modo que es una ventana flotante sobre otra actividad. Sin embargo, cuando hago clic fuera de la ventana de diálogo (en la actividad de fondo), el cuadro de diálogo se cierra. ¿Cómo puedo detener este comportamiento?


Aquí está mi solución:

AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Select The Difficulty Level"); builder.setCancelable(false);


Esta es la respuesta perfecta para todas sus preguntas ... Espero que disfrute de la codificación en Android

new AlertDialog.Builder(this) .setTitle("Akshat Rastogi Is Great") .setCancelable(false) .setMessage("I am the best Android Programmer") .setPositiveButton("I agree", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create().show();


Estaba enfrentando el mismo problema. Para manejarlo configuro un OntouchListener para el diálogo y no hago nada dentro. Pero Dialog descarta al rotar la pantalla también. Para solucionarlo, establecí una variable para decirme si el diálogo normalmente se ha descartado. Luego configuré un OnDismissListener en mi diálogo y en el interior OnDismissListener la variable. Si el diálogo se dismmis normalmente, no hago nada, o si no, ejecuto el cuadro de diálogo otra vez (y establezco su estado como cuando descarto en mi caso).


Establecer el diálogo cancelable como falso es suficiente, y si toca fuera del cuadro de diálogo de alerta o hace clic en el botón Atrás, desaparecerá el cuadro de diálogo de alerta. Entonces usa este:

setCancelable(false)

Y la otra función ya no es necesaria: dialog.setCanceledOnTouchOutside(false);

Si está creando un diálogo temporal y se pregunta dónde poner esta línea de código, aquí hay un ejemplo:

new AlertDialog.Builder(this) .setTitle("Trial Version") .setCancelable(false) .setMessage("You are using trial version!") .setIcon(R.drawable.time_left) .setPositiveButton(android.R.string.yes, null).show();



Lo que en realidad tiene es una Actividad (incluso si parece un Diálogo), por lo tanto, debe llamar a setFinishOnTouchOutside(false) de su actividad si desea mantenerla abierta cuando se hace clic en la actividad de fondo.

EDITAR: Esto solo funciona con Android API nivel 11 o superior


Lo que funcionó para mí fue crear DialogFragment y configurarlo para que no sea cancelable:

dialog.setCancelable(false);


Para evitar que el cuadro de diálogo se descarte al presionar la tecla Atrás, use esto

dialog.setCancelable(false);

Y para evitar que el cuadro de diálogo se descarte en el toque externo, use esto

dialog.setCanceledOnTouchOutside(false);


Para una API 10 más alta, el cuadro de diálogo desaparece cuando se toca afuera, mientras que en el cuadro inferior a la API 11, el cuadro de diálogo no desaparece. Para prevenir esto, debes hacer:

En styles.xml : <item name="android:windowCloseOnTouchOutside">false</item>

O

En el método onCreate() , use: this.setFinishOnTouchOutside(false);

Nota: para API 10 y menor, este método no tiene efecto y no es necesario.


Simplemente,

alertDialog.setCancelable(false);

evitar que el usuario haga clic fuera del cuadro de diálogo.


También es posible asignar diferentes acciones implementando onCancelListener:

alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){ @Override public void onCancel(DialogInterface dialogInterface) { //Your custom logic } });


Use setFinishOnTouchOutside(false) para API> 11 y no se preocupe porque el comportamiento predeterminado de Android que el diálogo temático de actividad no terminará, toque externo para API <11 :). ¡¡¡¡¡Salud!


Uso esto en onCreate (), parece funcionar en cualquier versión de Android; probado en 5.0 y 4.4.x, no puede probar en Gingerbread, los dispositivos Samsung (Nota 1 que ejecuta GB) lo tienen de esta manera por defecto:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { setFinishOnTouchOutside(false); } else { getWindow().clearFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH); } super.onCreate(savedInstanceState);


builder.setCancelable (falso);

public void Mensaje (Ver v) {

AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("¿Quieres ir a el Menú principal?"); builder.setMessage("Al presionar SI iras a el menú y saldras de la materia."); builder.setPositiveButton("SI", null); builder.setNegativeButton("NO", null); builder.setCancelable(false); builder.show(); }


Usa este código que está funcionando para mí

AlertDialog.Builder alertDialog = new AlertDialog.Builder(this); alertDialog.setCancelable(false);


alert.setCancelable(false); alert.setCanceledOnTouchOutside(false);

Supongo que esto te ayudará. Trabajó para mí


Dialog dialog = new Dialog(context) dialog.setCanceledOnTouchOutside(true); //use this to dismiss the dialog on outside click of dialog dialog.setCanceledOnTouchOutside(false); //use this for not to dismiss the dialog on outside click of dialog.

Mire este enlace para más detalles sobre el dialog.

dialog.setCancelable(false); //used to prevent the dismiss of dialog on backpress of that activity dialog.setCancelable(true); //used to dismiss the dialog on onbackpressed of that activity