Đây là những gì tôi muốn ứng dụng của mình thực hiện trên máy tính bảng. Fragment (0) có một số menu sẽ hiển thị mảnh (1) ... (n) như thế này:di chuyển đoạn Android sang một vùng chứa khác Không thể thay đổi ID vùng chứa của đoạn
-----------------
| | | | |
| | | | |
|(0)| X | X | X |
| | | | |
| | | | |
-----------------
becomes
-----------------
| | | | |
| | | | |
|(0)|(1)| X | X |
| | | | |
| | | | |
-----------------
and then
-----------------
| | | | |
| | | | |
|(0)|(2)|(1)| X |
| | | | |
| | | | |
-----------------
etc...
Fragment0 bao giờ di chuyển, những người khác được chuyển sang bên phải. Các mảnh vỡ đi ra khỏi cạnh bên phải sẽ bị phá hủy.
Vì vậy, tôi thiết lập layout XML của tôi với một LinearLayout ngang và chứa 4 FrameLayout với các ID thích hợp (fragment0 ... fragment3)
tôi có thể nhanh chóng và hiển thị fragment0 và sau đó fragment1, nhưng tôi không thể chuyển nó ở bên phải sau đó, tôi nhận được:
ERROR/AndroidRuntime(343): FATAL EXCEPTION: main
java.lang.IllegalStateException: Can't change container ID of fragment ...
những câu hỏi chỉ liên quan tôi đã tìm thấy là this one và that one, thử tất cả các giải pháp khác nhau được cung cấp không có may mắn.
Cố gắng FragmentTransaction.remove()
Tiếp theo .add()
, cố gắng .replace()
, thử chúng trong đơn đặt hàng khác nhau và cam kết một nửa chiều qua (thậm chí cố gắng để thực hiện hai lần như ai đó gợi ý), cố gắng gọi addToBackStack()
... vẫn không có may mắn.
Câu hỏi là liệu có thể di chuyển các đoạn như thế này bằng FragmentTransaction hay không. Nếu có, tôi đang làm gì sai (và tiền thưởng, là nó có thể animate đó?). Nếu không, đâu là cách thích hợp để thực hiện điều này?
Lưu ý rằng tôi không muốn khởi tạo lại các đoạn mỗi lần (mỗi truy vấn trên một số trang web có thể mất chút thời gian). Có thể trích xuất tất cả dữ liệu trở lại hoạt động để tạo lại, nhưng tôi không muốn làm điều đó nếu có thể ...
Nó không làm những gì tôi đang tìm kiếm, nhưng tôi đang cố gắng thay đổi mã của bạn để làm điều đó ... Tôi sẽ đăng nó nếu tôi có thể ... – Matthieu
Đã có thể làm những gì tôi cần .. Không thể tìm ra cách để đẩy các thay đổi của tôi vào ý chính bạn đã tạo, vì vậy tôi đặt nó ở đó: https://gist.github.com/4166640 – Matthieu
Xin lỗi. Đó có phải là một lỗi đánh máy, rằng nó phải là 'LinearLayout' thay vì' RelativeLayout' trong 'frag_fragaccordion.xml'? – midnite