¿Cómo puedo implementar FragmentManager y FragmentTransaction para reemplazar sólo un fragmento?
Tengo una actividad con 3 fragmentos; una cabecera; un cuerpo; un pie de página (el mismo punto que en HTML). El bodyfragment contiene tres botones que cada uno debe reemplazar el fragmento medio (body, itself) con otro, pero no puedo averiguar cómo trabajar FragmentManager y FragmentTransition aquí. Parece que no puedo encontrar ninguna coherencia en las preguntas de otras personas aquí con respecto a la forma en que otros implementan sus fragmentos. Parece que todo el mundo tiene sus propios métodos, o simplemente no incluye el código completo en sus hilos.
MainActivity.java
- Mapas android dejar de responder después de reanudar el fragmento
- Repoblando valores en Android Fragment onResume
- ¿Cómo agregar otro fragmento en el fragmento existente?
- Índice de fragmentos de resultados de actividad Fuera del rango: 0x20001
- Cómo enviar cursor de la actividad de Android para fragmentar
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.test_frag); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }
}
TestFragment.java
public class TestFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.test_frag, container, false); }
}
BodyFragment.java
public class BodyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.body_frag, container, false); }
}
Fragmento en XML
<fragment android:id="@+id/bodyfragment" android:name="com.example.test.BodyFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" tools:layout="@layout/body_frag" />
Diseño de BodyFragment en XML (botón x3)
<Button android:id="@+id/bsettings" android:layout_width="130dp" android:layout_height="40dp" android:layout_alignBaseline="@+id/bgames" android:layout_alignBottom="@+id/bgames" android:layout_toRightOf="@+id/bgames" android:text="SETTINGS" />
- reproducir la vista del fragmento a través del botón
- Fragmentos que se superponen entre sí
- No se puede cambiar ID de contenedor de fragmento
- ¿Cómo puedo hacer que mi botón haga algo en Fragments, ViewPager
- Android - instanciar un fragmento varias veces?
- ¿Cómo puedo utilizar FragmentManager para mostrar Fragmento A, B, C, ... en un FrameLayout?
- Fragmento ya activo - Al intentar establecerArgumentos
- Fragmento todavía existe después de quitar?
Utiliza el FragmentManager como este:
FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.bodyfragment, AnotherFragment.newInstance()); // newInstance() is a static factory method. transaction.commit();
Este código reemplazaría al Fragmento que se encuentra en la Vista con el fragmento ID id.id con una nueva Instancia de otro Fragmento.
EDITAR:
Para crear una nueva instancia de otro Fragmento se supone que se utilizará un método estático de fábrica. Los implementarías en tu Fragmento como este:
public class AnotherFragment extends Fragment { public static AnotherFragment newInstance() { AnotherFragment fragment = new AnotherFragment(); ... // do some initial setup if needed, for example Listener etc ... return fragment; } ... }
- Inyectar dependencias en singleton con Dagger?
- No se puede codificar un archivo de análisis no guardado, trabajando con ParseUser