Fragmento agregar o reemplazar no funciona

Estoy usando el código de esta referencia.

Cuando introduzco ese código en mi progtwig, aparece un error como se ve en la imagen siguiente. enter image description here

¿Alguna razón del error? The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, ExampleFragments)

Código de mi actividad principal:

 public void red(View view) { android.app.FragmentManager fragmentManager = getFragmentManager(); android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); ExampleFragments fragment = new ExampleFragments(); fragmentTransaction.replace(R.id.frag, fragment); fragmentTransaction.commit(); } 

ExampleFragments.java

 package com.example.learn.fragments; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ExampleFragments extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.blue_pill_frag, container, false); } } 

Aquí:

 package com.example.learn.fragments; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.ViewGroup; 

El problema aquí es que estás mezclando android.support.v4.app.Fragment y android.app.Fragment . getSupportFragmentManager() convertir todos los usos para usar la biblioteca de soporte, lo que también significa llamar a getSupportFragmentManager() .

Algo como esto, por ejemplo:

  android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); ExampleFragments fragment = new ExampleFragments(); fragmentTransaction.replace(R.id.frag, fragment); fragmentTransaction.commit(); 

Es importante tener en cuenta que el Fragment biblioteca de soporte y el Fragment normal NO son intercambiables. Logran el mismo propósito, pero no pueden ser reemplazados el uno con el otro en el código.

Aunque esta pregunta puede haber sido respondida, debe tenerse en cuenta que la solución a los fragmentos superpuestos es obtener la identificación del fragmento (en realidad, la ID de FrameLayout declarada en su xml provocará dolores de cabeza) con una nueva instancia de “Fragmento”:

 FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); Fragment fragment = new ExampleFragments(); fragmentTransaction.replace(R.id.frag, fragment); fragmentTransaction.commit(); 

No puedo decirte cuántas horas pasé revisando publicación tras publicación sin solución. Leí tu otra publicación que está vinculada en los comentarios anteriores y voy a responder allí también por si alguien lo encuentra primero.

Para aquellos que obtienen una ClassCastException , intente esto también. Puede tener todas las bibliotecas correctas agregadas, usando FragmentActivity lugar de Fragment , y tiene getActivity (). GetSupportFragmentManager en su código para detener errores en un ListFragment y de todos modos encontrará problemas con Fragments. Los documentos de Google no te muestran todo, y la finalización del código Eclipse no siempre te salvará … a veces solo tienes que arreglar el error tú mismo.

No importa lo que intenté (incluidos los que están escritos aquí), no pude resolver este problema hasta que vi esta respuesta

https://stackoverflow.com/a/5907704/728312

Thisworked para mí

android.app.FragmentManager fragmentManager = getActivity().getFragmentManager();