DialogFragments con dispositivos api level <11

Estoy en el proceso de hacer un proyecto / horquilla de nido de abeja compatible con 1.6+.

De acuerdo con la documentación proporcionada por Google / Android decidí construir fuera de todos mis fragmentos fuera de DialogFragment s que trabajó grande para el panal … que me da la flexibilidad para poner cualquier cosa como un cuadro de diálogo o elemento de "pantalla completa".

Ahora he incorporado el kit de compatibilidad y movido mis llamadas de importaciones y método a eso. Ahora que estoy en 2.3 Estoy intentando lanzar una intención idéntica pero recibo este problema:

 java.lang.IllegalStateException: DialogFragment can not be attached to a container view 

La documentación de DialogFragment sugiere que puede realizarse como Fragment cuando no desea la funcionalidad de diálogo / popup.

Me las arreglé para solucionar esto correctamente en DialogFragment.java del paquete de compatibilidad:

Cambiar la línea 74: boolean mShowsDialog = false;

Comentario línea 232: //mShowsDialog = mContainerId == 0;

A continuación, cambie los dos métodos de show a esto:

 public void show(FragmentManager manager, String tag) { this.setShowsDialog(true); FragmentTransaction ft = manager.beginTransaction(); ft.add(this, tag); ft.commit(); } // JavaDoc removed public int show(FragmentTransaction transaction, String tag) { this.setShowsDialog(true); transaction.add(this, tag); mRemoved = false; mBackStackId = transaction.commit(); return mBackStackId; } 

Básicamente, se escribió en apoyo, pero la alternancia para cambiar entre diálogo / incrustado no funciona.

Por lo tanto, aquí por defecto para incrustado, y luego establecer para mostrar como un diálogo justo antes de mostrarlo.

He tenido el mismo problema. Nunca encontré una solución "correcta", pero puedes hacer lo mismo estableciendo el tema del Diálogo en OnCreateDialog() . Al configurar el tema en android.R.style.Theme_Holo_DialogWhenLarge el diálogo se mostrará como un diálogo en pantallas grandes y xlarge, mientras que se mostrará como una ventana de pantalla completa en pantallas pequeñas y normales.

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(STYLE_NO_TITLE, android.R.style.Theme_Holo_DialogWhenLarge); } 

Estoy utilizando una clase de niño de DialogFragment y haciendo este truco en las obras de onCreate (). Llamo setShowsDialog () antes de llamar onCreate () (en el onAttachFragment () de mi Actividad)

 public class DialogFragmentHosted extends DialogFragment { @Override public void onCreate(Bundle savedInstanceState) { boolean forceShowDialog = savedInstanceState==null; boolean showsDialog = getShowsDialog(); super.onCreate(savedInstanceState); if (forceShowDialog ) setShowsDialog(showsDialog); } } 

Puede usar la versión de android.support.v4.app.DialogFragment, por favor marque aquí

¿Revisó la nota de aplicación? Muestra una forma recomendada de incrustar un diálogo, y he verificado esto funciona en 2.2.1.

http://developer.android.com/reference/android/app/DialogFragment.html#DialogOrEmbed

Mi diseño del fragmento tenía que cambiar para conformarse pero era rápido y fácil. Es más natural ser capaz de definir el fragmento de diálogo en XML y esperar que se incruste sin ningún trabajo adicional (como los cambios anteriores a la API Compat sería compatible); Y para esperar sólo el comportamiento modal cuando se llama a través de show (). Supongo que no es el comportamiento actual.

  • ¿Cómo actualizar ListView en ListFragment de FragmentActivity?
  • Agregar botones a PreferenceFragment
  • Obtener imagen de la galería para establecer en imageview en fragmento?
  • Desplazamiento vertical en el visor
  • ViewPager con FragmentPagerAdapter no se muestra
  • Android Studio piensa que estoy construyendo para API Nivel 1 en lugar de Android L
  • Diferencia entre FragmentPagerAdapter y FragmentStatePagerAdapter
  • Fragmento onOptionsItemSelected no se llama
  • Cómo utilizar Facebook SDK con android.app.Fragment
  • Cómo salvar backstack fragmento entre el reinicio de la aplicación?
  • newInstance () con Java personalizado genérico?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.