Pracuję nad aplikacją, która używa fragmentów, w zeszłym tygodniu moje urządzenie testowe miało aktualizację Lolipop. Kiedy testuję swoją aplikację na urządzeniu Lolipop, zobaczyłem, że metoda wymiany Fragment Transaction nie działa poprawnie.Wymiana Fragmentów na API-21 pozostaje za
Działa z myląco w wersji Lolipop, mimo że wszystko w porządku w wersji Kitkat.
W celu wyjaśnienia mojej sytuacji dodałem kilka zdjęć.
- Pierwszy ekran ---------------------------- KitKat ------------- ------------------------ Lollipop -------------
Jak widać, gdy używam kitkat
, wszystko dobrze, ale zaraz po użyciu lolipop
fragment wymiany transakcji działa myląco.
Oto mój kod przycisku;
mButtonOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FeedbackFragment mFragmentFeedBack = new FeedbackFragment();
android.app.FragmentManager fm = getFragmentManager();
fm.executePendingTransactions();
android.app.FragmentTransaction fragmentTransaction = fm.beginTransaction();
if (mFragmentFeedBack.isVisible()) {
fragmentTransaction.hide(mFragmentFeedBack);
} else {
if (!mFragmentFeedBack.isAdded()) {
fragmentTransaction.replace(R.id.containerfragment, mFragmentFeedBack);
}
fragmentTransaction.show(mFragmentFeedBack);
}
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
tutaj jest mój xml;
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="117dp" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/containerfragment">
</FrameLayout>
EDIT: wersja Kitkat działa na tablecie, ale próbowałem moją aplikację na telefon (w wersji KitKat) wynik jest taki sam. Bez zmian.
Dzięki.
Czy sprawdzić w tablecie (z Lollipop) tej samej aplikacji? –
Tak. działa tak samo. Podczas testowania urządzenia w wersji Lollipop, zastępowany fragment pozostaje w tyle. – salih
Powiedziałeś "Widziałem, że metoda wymiany Fragment Transaction nie działa poprawnie". Ale wydaje mi się, że fragmentTransaction.hide jest wykonywany zamiast replace(), ze względu na kod, jeśli (mFragmentFeedBack.isVisible()). Czy myślisz, że to możliwe? W takim przypadku sprawdź przynajmniej KitKat. –