Cómo descartar un DialogFragment al presionar fuera del cuadro de diálogo?
Estoy utilizando un DialogFragment
, y mientras que he fijado con éxito una imagen para cerrarse (es decir, despedir) el diálogo cuando está presionado, estoy teniendo dificultades para encontrar la manera de descartar el diálogo cuando el usuario hace clic en cualquier lugar fuera de él, tal y como funciona Con diálogos normales. Pensé que habría algún tipo de
dialogFragment.setCanceledOnTouchOutside(true);
Llamada, pero no veo eso en la documentación.
- FragmentManager agrega varias instancias del mismo tipo de fragmento
- ActionBarSherlock, ViewPager, TabsAdapter Fragmentos de tabulación anidados
- Mapas android dejar de responder después de reanudar el fragmento
- Error "java.lang.IllegalStateException: No se puede cambiar la etiqueta de fragmento" cuando se utiliza ViewPager # setCurrentItem ()
- Actualizar una vista de lista en un fragmento de un receptor de difusión
¿Esto es posible con DialogFragment
? ¿O estoy buscando en los lugares equivocados? Intenté interceptar eventos táctiles en la actividad de 'padre', pero aparte de no tener ningún evento táctil, no me pareció correcto.
- No se puede utilizar SimpleAdapter en un ListFragment
- Android - FragmentTabHost me da "No se conoce ninguna pestaña para la etiqueta null"
- Android AsyncTask - ¿por qué no se ejecuta doInBackground ()?
- Fragmentos en viewpager, no se encontró error de vista
- Métodos de fragmento: attach (), detach (), remove (), replace (), popBackStack ()
- Cómo iniciarActivityForResult de Adapter para obtener el resultado de nuevo a Fragment
- ¿Cómo puedo implementar el desplazamiento horizontal sin utilizar la biblioteca de soporte?
- ¿Cómo iniciar la transición de elementos compartidos usando Fragmentos?
DialogFragment.getDialog().setCanceledOnTouchOutside(true);
Debe ser llamado en onCreateView
(como Apurv Gupta señaló).
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ... getDialog().setCanceledOnTouchOutside(true); ... }
/** The system calls this only when creating the layout in a dialog. */ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // The only reason you might override this method when using onCreateView() is // to modify any dialog characteristics. For example, the dialog includes a // title by default, but your custom layout might not need it. So here you can // remove the dialog title, but you must call the superclass to get the Dialog. Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setCanceledOnTouchOutside(true); return dialog; }
DialogFragment.getDialog().setCanceledOnTouchOutside(false);
Fue un error. Yo tuve el mismo problema. Esto funciona bien para Java y Mono para Android Mono será:
this.getDialog().SetCanceledOnTouchOutside(false);
Yo recomendaría usar mi solución sólo después de probar soluciones anteriores. He descrito mi solución aquí . Para resumir, estoy comprobando los límites táctiles de DialogFragment.getView (). Cuando los puntos de contacto están fuera de DialogFragment, estoy descartando el diálogo.
Dialog.SetCanceledOnTouchOutside(true);
Trabajado para mi
Mi código
class dlgRegister : DialogFragment { public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { .... .... } public override void OnActivityCreated(Bundle savedInstanceState) { Dialog.Window.RequestFeature(WindowFeatures.NoTitle); Dialog.SetCanceledOnTouchOutside(true); base.OnActivityCreated(savedInstanceState); Dialog.Window.Attributes.WindowAnimations = Resource.Style.dialog_animation; } }
Muchas respuestas aquí pero, la aplicación se bloquea cuando se abre el cuadro de diálogo. Escribir getDialog().setCanceledOnTouchOutside(true);
Dentro onCreateView
no funcionó y se estrelló mi aplicación.
(Estoy usando AppCompatActivity
como mi BaseActivity y android.app.DialogFragment
como mi Fragmento).
Lo que funciona es una de las dos líneas siguientes:
GetDialog (). SetCanceledOnTouchOutside (true);
O
This.getDialog (). SetCanceledOnTouchOutside (true);
onActivityCreated
como
@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //getDialog().getWindow().getAttributes().windowAnimations = R.style.DialogAnimationZoom; //getDialog().getWindow().setDimAmount(0.85f); getDialog().setCanceledOnTouchOutside(true);//See here is the code }
Qué no usar:
DialogFragment.getDialog (). SetCanceledOnTouchOutside (false);
Lanza error siguiente
Y escribir el código en onCreateView
bloquea la aplicación! Actualice la respuesta si encuentra algo incorrecto.
- Android módulo de apache desaprobado (HttpClient, HttpResponse, etc.)
- WebView Android "tel:" enlaces muestran página web no encontrada