Tôi đang phát triển một ứng dụng sử dụng phân đoạn, tuần trước thiết bị thử nghiệm của tôi đã cập nhật lolipop. Khi tôi kiểm tra ứng dụng của mình trên thiết bị lolipop, tôi thấy phương thức thay thế của Giao dịch mảnh vỡ không hoạt động đúng cách.Giao dịch của Fragment thay thế trên API-21 đang ở phía sau
Tính năng này hoạt động với phiên bản Lolipop gây nhầm lẫn mặc dù mọi thứ đều tốt trên phiên bản Kitkat.
Để giải thích tình huống của tôi, tôi đã thêm một số hình ảnh.
- Màn hình đầu tiên ---------------------------- KitKat ------------- ------------------------ Lollipop -------------
Như bạn có thể thấy, khi tôi sử dụng kitkat
, mọi thứ đều ổn nhưng ngay sau khi tôi sử dụng lolipop
giao dịch mảnh thay thế là làm việc gây nhầm lẫn.
Đây là mã nút của tôi;
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();
}
});
đây là xml của tôi;
<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: phiên bản Kitkat đang chạy trên một máy tính bảng, nhưng tôi đã cố gắng ứng dụng của tôi trên điện thoại (phiên bản Kitkat) kết quả là như nhau. Không thay đổi.
Cảm ơn.
bạn có kiểm tra trong máy tính bảng (có kẹo) cùng một ứng dụng không ?? –
Có. nó hoạt động tương tự. Khi thử nghiệm thiết bị phiên bản lollipop, thay thế phân đoạn ở lại phía sau. – salih
Bạn đã nói "Tôi thấy phương thức thay thế của Giao dịch mảnh vỡ không hoạt động đúng". Nhưng có vẻ như tôi fragmentTransaction.hide được thực hiện thay vì thay thế(), do mã if (mFragmentFeedBack.isVisible()). Bạn có nghĩ rằng đó là có thể? Trong trường hợp này, hãy kiểm tra KitKat ít nhất. –