java - por - Reemplazar un fragmento con otro fragmento dentro del grupo de actividad
pasar de un fragmento a otro en android studio (7)
Espero que estés bien. Cuando comencé a trabajar con Android Fragments
, también estaba teniendo el mismo problema, entonces leí acerca de 1- Cómo cambiar el fragmento con otro. 2- Cómo agregar fragmentos si el Fragment container
no tiene ningún fragmento.
luego, después de un poco de I + D, creé una función que me ayuda en muchos proyectos hasta ahora y todavía estoy usando esta sencilla función.
public void switchFragment(BaseFragment baseFragment) {
try {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
if (getSupportFragmentManager().findFragmentById(R.id.home_frame) == null) {
ft.add(R.id.home_frame, baseFragment);
} else {
ft.replace(R.id.home_frame, baseFragment);
}
ft.addToBackStack(null);
ft.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
disfruta de tu código de tiempo :)
Tengo un fragmento dentro de una actividad de grupo y quiero reemplazarlo con otro fragmento:
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
SectionDescriptionFragment bdf = new SectionDescriptionFragment();
ft.replace(R.id.book_description_fragment, bdf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Funciona bien cuando se realiza como un proyecto separado sin usar el grupo de actividades, todo funciona bien en log cat ya que el control va dentro de getview (), pero no hay vista visible, ni siquiera surge ninguna excepción, quiero que el fragmento de detalles del libro ser reemplazado por fragmento de detalle de sección.
Xml del fragmento de detalles del libro tiene id book_description_fragment y xml para fragmento de descripción de sección tiene id section_description_fragment.
El código anterior está en el método OnClick de un elemento, quiero que cuando el usuario toque un elemento en la vista de desplazamiento horizontal, el fragmento cambie.
He hecho una idea central con EL método perfecto para administrar el reemplazo de fragmentos y el ciclo de vida .
Solo reemplaza el fragmento actual por uno nuevo, si no es el mismo y si no está en la pila posterior (en este caso, se abrirá).
Contiene varias opciones como si quisiera que el fragmento se guarde en backstack.
Al usar esto y una sola actividad, es posible que desee agregar esto a su actividad:
@Override
public void onBackPressed() {
int fragments = getSupportFragmentManager().getBackStackEntryCount();
if (fragments == 1) {
finish();
return;
}
super.onBackPressed();
}
Use ViewPager. Es trabajo para mi
final ViewPager viewPager = (ViewPager) getActivity().findViewById(R.id.vp_pager);
button = (Button)result.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewPager.setCurrentItem(1);
}
});
Use el siguiente código en android.support.v4
FragmentTransaction ft1 = getFragmentManager().beginTransaction();
WebViewFragment w1 = new WebViewFragment();
w1.init(linkData.getLink());
ft1.addToBackStack(linkData.getName());
ft1.replace(R.id.listFragment, w1);
ft1.commit();
Use este código usando v4
ExampleFragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();
Los fragmentos que están codificados en XML no pueden ser reemplazados. Si necesita reemplazar un fragmento por otro, debe haberlos agregado dinámicamente, antes que nada.
Nota: R.id.fragment_container es un diseño o contenedor de tu elección en la actividad a la que le estás enviando el fragmento.
// Create new fragment and transaction
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack if needed
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
// Commit the transaction
transaction.commit();