v4 getFragmentManager con Actividad – Tipos incompatibles

Tengo una actividad simple que funciona como esperado.

import android.app.Activity; import android.app.FragmentManager; // import android.support.v4.app.FragmentManager; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // FragmentManager fm = getSupportFragmentManager(); // ActionBarActivity FragmentManager fm = getFragmentManager(); // Activity } } 

Entonces lo reemplazé

 import android.app.FragmentManager; 

con

 import android.support.v4.app.FragmentManager; 

así que podría apoyar mis dispositivos más viejos. Sin embargo, esto divulga un error:

 Incompatible types. Required: android.support.v4.app.FragmentManager Found: android.app.FragmentManager 

¿Qué estoy haciendo mal aquí?

La solución popular que encontré es usar getSupportFragmentManager () en su lugar, pero esto sólo funciona para ActionBarActivites [editar – ver respuestas] y FragmentActivities.

no se puede convertir de android.app.FragmentManager a android.support.v4.app.FragmentManager

La otra solución relevante apunta a usar una FragmentActivity en su lugar, pero esto parece tener los mismos problemas heredados.

El método getFragmentManager () no está definido para el tipo MyActivity

 import android.support.v4.app.FragmentManager; import android.os.Bundle; import android.support.v4.app.FragmentActivity; public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); // FragmentManager fm = getSupportFragmentManager(); // ActionBarActivity FragmentManager fm = getFragmentManager(); } } 

Estoy bastante seguro de que la solución a esto será en SE ya, pero no es fácil (para mí) para encontrar. El ejemplo mínimo debería ayudar a otras personas a entenderlo también.

  • Soy relativamente nuevo en Android.

En su primer caso, si utiliza getSupportFragmentManager() necesita extender FragmentActivity o extender ActionBarActivity (extends FragmentActivity) ya que FragmentActivity es la clase base para fragmentos basados ​​en soporte.

En tu segundo caso necesitas usar getSupportFragmentManager() lugar de getFragmentManager() .

Se introdujeron fragmentos en panal. Para soportar fragmentos debajo del nido de abeja es necesario utilizar fragmentos de la biblioteca de soporte, en cuyo caso es necesario extender FragmentActivity y utilizar getSupportFragmentManager() .

 use getSupportFragmentManager() instead, but this only works for ActionBarActivites. 

Mal, debería funcionar en tu FragmentActivity , que FragmentActivity está en tu paquete de soporte, cuando estés soportando un dispositivo antiguo, entonces toda tu importación de la activity , fragment , fragment managers , etc., debe tener android.support.v4. para especificar que está utilizando el paquete de soporte. sin utilizarlo, resultará en un incompatible compile time error.

 What am I doing wrong here? 

Usted está combinando el paquete de la ayuda con el paquete de la no ayuda que resultan al incompatible compile time error , como dije arriba.

  • Actividad de fragmento catch onKeyDown y uso en fragmento
  • Android ShowDialog: IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState
  • Cómo puedo declarar un fragmento como oculto en un diseño XML
  • Atascado con portar de la actividad a fragmentar
  • NullPointerExecption al llamar a un PhoneStateListener en un servicio
  • El método add (int, Fragment, String) en el tipo FragmentTransaction no es aplicable para los argumentos (int, Fragment, String)
  • Doble fragmento de rotación de Android con ActionBar
  • Android Fragment creó dos veces el cambio de orientación
  • ¿Para fragmentar o no fragmentar?
  • ¿Es posible llamar manualmente onCreateView en un fragmento?
  • CommitAllowingStateLoss () en las actividades de fragmento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.