studio reemplazar por pasar otro navegar medio fragments fragmento example entre destruir cambiar boton activity java android android-fragments

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.

=> Ver Gist aquí

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(); }


Por favor mira esta Question

Solo puede reemplazar un " fragmento agregado dinámicamente ".

Entonces, si desea agregar un fragmento dinámico, vea this ejemplo.


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();