Chúng tôi có một Hoạt động có chứa một SlidingMenu (https://github.com/jfeinstein10/SlidingMenu), trong đó có ba tùy chọn, hãy gọi chúng là A, B1, C1. Chúng tương ứng với Phân đoạn mà chúng tôi hiển thị trong Hoạt động. Khi bạn chọn một tùy chọn khác từ SlidingMenu, tôi thay thế đoạn hiện tại bằng đoạn mới thông qua FragmentManager.Xóa ngăn xếp Android Fragment trở lại mà không cần popping?
Từ đoạn B1 bạn có thể đi đến hai phần khác, hãy gọi chúng là B2 và B3. Ở đây chúng tôi muốn phím Back để đưa bạn từ B2 -> B1 hoặc từ B3 -> B1, vì vậy tôi gọi transaction.addToBackStack (null). Nếu chúng ta chọn một tùy chọn từ SlidingMenu khi bạn đang ở B2 hoặc B3, chúng tôi muốn xóa ngăn xếp lại, vì vậy tôi sử dụng mã như được đề xuất trong câu hỏi này Clear back stack using fragments gọi popBackStack() cho đến khi nó rõ ràng.
Cho đến nay rất tốt.
Từ đoạn C1, bạn có thể chuyển đến Phân đoạn C2. Vì C1/C2 có nhiều thiết kế chính/chi tiết hơn, tôi sử dụng
fragmentTransaction.setCustomAnimations(R.animator.slide_in_from_right,
R.animator.slide_out_to_left, R.animator.slide_in_from_left,
R.animator.slide_out_to_right);
để thêm hoạt ảnh trang trình bày C1 trượt sang trái như C2 trang trình bày từ bên phải và ngược lại. Nhấn phím Back trong khi trên C2 đưa chúng ta trở lại C1, với các hình ảnh động ngược lại, và tất cả là tốt.
NHƯNG
Nếu bạn chọn A hoặc B1 từ SlidingMenu và chúng tôi popBackStack() để thoát khỏi C1 từ ngăn xếp trở lại, sau đó nó trượt C2 ra ở bên phải, trông lạ. Những gì tôi muốn làm là xóa ngăn xếp lại mà không chạy hoạt ảnh, nhưng tôi không thể tìm được cách để làm điều đó. Tôi đã thử gọi popBackStackImmediate() thay vào đó, nhưng điều đó dường như không tạo ra bất kỳ sự khác biệt nào. Thay vào đó, tôi đoán tôi có thể tránh gọi addToBackStack, và thay vào đó tự tay xử lý người dùng nhấn phím Quay lại thông qua Activity.onBackPressed(), nhưng có lẽ có một giải pháp mà tôi không thể nhìn thấy?
Điều đó dường như làm chính xác những gì tôi cần. Cảm ơn! –
@JonathanCaryl Tuyệt vời! Tôi vui vì nó hoạt động như tôi đã không thực sự chắc chắn 100% nó sẽ :) – TronicZomB
Không làm việc cho tôi với thư viện hỗ trợ v23.1.1 –