Tôi tự hỏi liệu đây có thực sự là một lỗi trong API Android không:
Tôi có một thiết lập như vậy:
┌----┬---------┐
| | |
| 1 | 2 |
| |┌-------┐|
| || ||
| || 3 ||
└----┴┴-------┴┘
- Là một menu tải đoạn # 2 (Màn hình tìm kiếm) trong khung bên phải.
- Là màn hình tìm kiếm chứa đoạn 3, là danh sách kết quả.
- Danh sách kết quả được sử dụng ở một số nơi (bao gồm cả phân đoạn cấp cao hoạt động theo quyền riêng của nó).
Chức năng này hoạt động hoàn hảo trên điện thoại (Trong đó 1 & 2 và 3 là ActivityFragment
s).
Tuy nhiên, khi tôi sử dụng mã này:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
Fragment frag = new FragmentNumber2();
if(toLoad != null) frag.setArguments(toLoad);
transaction.replace(R.id.rightPane, frag);
transaction.commit();
Trường hợp R.id.leftPane
và R.id.rightPane
là <fragment>
s trong một bố trí tuyến tính ngang.
Theo hiểu biết của tôi, đoạn mã trên sẽ loại bỏ đoạn được cư trú và sau đó thay thế nó bằng một đoạn mới. Rực rỡ ... Rõ ràng đó không phải là điều xảy ra bởi vì khi mã này chạy lần thứ hai, bạn sẽ có ngoại lệ sau:
07-27 15:22:55.940: ERROR/AndroidRuntime(8105): Caused by: java.lang.IllegalArgumentException: Binary XML file line #57: Duplicate id 0x7f080024, tag null, or parent id 0x0 with another fragment for FragmentNumber3
Điều này được gây ra bởi vì bộ chứa cho FragmentNumber3 đã được sao chép và nó không còn có ID duy nhất. Mảnh vỡ ban đầu chưa bị phá hủy (?) Trước khi mảnh mới được thêm vào (trong tâm trí của tôi có nghĩa là nó chưa được thay thế ).
Ai đó có thể cho tôi biết nếu điều này là có thể ( câu trả lời này cho thấy không phải vậy) hoặc đó là một lỗi?