Mám zvláštny problém. Chcem otvoriť nový fragment zo súčasného fragmentu. Robím to teda takto:
Fragment fragment = new teamSettings();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.teamDetailAdmin, fragment);
// add to backstack, then back button will be work with fragments!
ft.addToBackStack(null);
// add animation
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
Problém je v tom, že v mojom novom fragmente vidím tie tlačidlo, na ktoré som klikol v predchádzajúcom fragmente.
Môže mi niekto vysvetliť, prečo sa to deje?
odpovede:
1 pre odpoveď č. 1Try this way,
Please take framelayout in your current activity
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Fragment fragment = new teamSettings();
getFragmentManager().beginTransaction().replace(R.id.container, fragment,
fragment.getTag()).commit();
1 pre odpoveď č. 2
Volanie FragmentTransition replace(R.id.container,fragment)
funguje skoro ako volanie remove
- ku každému fragmentu daného kontajnera a add
k novému fragmentu. Ak váš predchádzajúci fragment nie je odstránený (tlačidlo sa stále zobrazuje), je to preto, že ste tento fragment pridali pre iný kontajner ako R.id.teamDetailAdmin
. Ak chcete fragment úspešne nahradiť, ak sú v rôznych kontajneroch, musíte z kontajnera odstrániť aktuálny fragment a pridať nový fragment do požadovaného kontajnera.