tag studio example attribute android fragment fragmentmanager

android - studio - title html attribute



Uso adecuado de subgrupos con FragmentManager(hijo) (1)

Debe agregar SubFragment a Fragment la misma manera que agrega Fragment a Activity . Me refiero a que agregar Fragment a la Activity debería ser como:

@Override public void onCreate(Bundle savedInstanceState) { .... if (savedInstanceState == null){ //add fragment mMainFragment = new MainFragment(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.fragment_main, mMainFragment); transaction.commit(); } }

Agregar SubFragment a MainFragment debería verse así:

public class MainFragment extends Fragment{ @Override public View onCreateView(LayoutInflater i, ViewGroup c, Bundle savedInstanceState) { ... if (savedInstanceState == null){ mSubFragment = new SubFragment(); //add child fragment getChildFragmentManager() .beginTransaction() .add(R.id.fragment_sub, mSubFragment, "tag") .commit(); } } }

o puede agregar un fragmento hijo a Fragment en el método onCreate

¿Cómo uso correctamente los fragmentos en fragmentos?

Mi caso de uso (simplificado) es el siguiente, tengo una actividad con un fragmento de diseño y este fragmento contiene un subgrupo ... todos los fragmentos se agregan manualmente a sus padres ...

---------------------------------------------------------- - Activity - - - - - - --------------------------------------- - - - Fragment - - - - - - - - ----------------- - - - - - SubFragment - - - - - - - - - - - - - - - - - ----------------- - - - --------------------------------------- - - - ----------------------------------------------------------

Ahora en mi actividad onCreate hago lo siguiente:

if (savedInstanceState == null) { // I create the fragment mMainFragment = new MainFragment(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.fragment_main, mMainFragment); transaction.commit(); } else { // I retrieve the fragment mMainFragment = (BaseFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_main); }

Y en mis fragmentos onCreate , obtengo / creo mi SubFragmento:

mSubFragment = getChildFragmentManager().findFragmentByTag(SubFragment.class.getName()); if (mSubFragment == null) { mSubFragment = new SubFragment(); getChildFragmentManager().beginTransaction().add(R.id.fragment_sub, mSubFragment, SubFragment.class.getName()).commit(); }

Problema

Después de la rotación de la pantalla, mi Subfragmento se agrega dos veces ... Si uso el FragmentManager la actividad, entonces funciona ... Pero, ¿por qué no funciona con el ChildFragmentManager ? Por supuesto, el Fragmento es un fragmento nuevo, pero la actividad también es nueva, así que ¿por qué funciona con el FragmentManager la actividad pero no con el fragmento principal?

En un fragmento, debería usar los fragmentos ChildFragmentManager , ¿no es así?