Tôi có ba đoạn như minh họa trong hình bên dưới. Tôi đã thêm tất cả ba mảnh này trong LinearLayout bằng tệp .xml và khi hoạt động của trình khởi chạy của tôi bắt đầu, tôi tải bố cục .xml đó bằng cách sử dụng setContentView.
Tôi có một số điều khiển trên fragment2. Nhấp vào bất kỳ ai tải đoạn mã theo cách lập trình bằng cách sử dụng phương thức FragmentTransaction và cam kết. Các mảnh vỡ này được thêm vào màn hình nhưng vấn đề là đoạn được thêm vào theo chương trình4 chiếm toàn bộ vùng màn hình. Những gì có thể là vấn đề?
Lưu ý: Trên bất kỳ mục nào nhấp vào f2 tôi chỉ muốn thay thế f2 bằng đoạn mới f4. Hãy nhớ rằng tôi đã thêm tệp f1, f2, f3 thông qua tệp bố cục xml và thêm phân đoạn mới f4 theo lập trình.
Thay thế một đoạn chương trình
Trả lời
Bạn nên luôn thêm, xóa và thay thế các đoạn của bạn theo chương trình. Như vậy tôi đề nghị bạn thay thế các mảnh F-1, F-2 và F-3 bằng các thùng chứa như FrameLayout.
Về cơ bản thay vì có yếu tố <fragment/>
là F-1, bạn tạo thành phần tử <FrameLayout/>
. Sau đó, bạn thực hiện giao dịch phân đoạn trong FragmentActivity's onCreate:
Fragment1 f1 = new Fragment1();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f1_container, f1); // f1_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Bây giờ, Giả sử bạn đã thực hiện điều này cho F-1, F-2 và F-3. Sau đó, bạn thay thế f2 bằng f4 bằng cách thực hiện lại điều tương tự trong OnClickListener
:
public void onClick(View v) {
Fragment4 f4 = new Fragment4();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.f2_container, f4); // f2_container is your FrameLayout container
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
Bạn có bất kỳ tài liệu tham khảo để tôi có thể lấy một ví dụ từ đó? – MobiDev
Tôi đã chỉnh sửa câu trả lời của mình. Điều này sẽ khắc phục vấn đề của bạn. – CodePrimate
Cảm ơn. OK những gì tôi hiểu là không đặt các mảnh trực tiếp vào bố trí xml. Đặt framelayouts thay cho các phần tử mảnh. Và trong khi thay thế f4 với f2 sử dụng khung của f2. Tôi có đúng không? Bạn có thể cung cấp cho trang web tham khảo để kiểm tra xem nó ra. – MobiDev
Chỉ giữ FrameLayout làm trình giữ chỗ cho đoạn trong XML. Trong OnCreate tải các mảnh trong framelayout. OnClick của mảnh, cung cấp cho id của FrameLayout cụ thể để thay thế bởi Fragment4.
- 1. UISegmentedControl thay đổi số phân đoạn theo chương trình
- 2. Chuyển đổi các đoạn theo chương trình
- 3. Thêm các nút theo chương trình vào một đoạn
- 4. Android thay thế đoạn hiện tại bằng một đoạn khác
- 5. Tạo các phân đoạn toàn màn hình theo chương trình
- 6. Cách thêm phân đoạn theo chương trình trong relativelayout
- 7. một hàm thay vì chương trình sao chép và dán
- 8. thay thế một đoạn chuỗi từ luồng đầu vào
- 9. Thay thế đoạn với một mảnh bên ViewPager
- 10. Thay thế đoạn đầu trên stack lại
- 11. Thay thế cho ui: đoạn trong JSF
- 12. Đoạn được thay thế vẫn hiển thị
- 13. Làm thế nào để thêm những thứ vào một chương trình menustrip theo chương trình?
- 14. Làm thế nào để chạy chương trình bên ngoài thông qua một chương trình C#?
- 15. Tại sao ghi vào một chuỗi ký tự trong phân đoạn chương trình C này?
- 16. Thay đổi hình ảnh theo chương trình?
- 17. Làm thế nào để thay đổi kích thước ngăn xếp cho một chương trình .NET?
- 18. Làm thế nào để thay đổi một biểu tượng của TextView theo chương trình?
- 19. BASH: chương trình đệ quy để thay thế văn bản trong một cây các tập tin
- 20. Chạy chương trình java từ một chương trình java khác
- 21. Phím quay lại trên phân đoạn được thêm theo chương trình Đoạn mã dẫn đến vùng chứa trống
- 22. Làm thế nào để vá một chương trình Java?
- 23. Trình đổ bóng đoạn OpenGL ES có thể thay đổi giá trị độ sâu của một đoạn không?
- 24. Làm thế nào để thực hiện chương trình một bộ thử nghiệm bằng cách sử dụng JUnit4 theo chương trình?
- 25. Android: thay đổi chương trình nhãn ứng dụng theo chương trình?
- 26. Tại sao chương trình của tôi thỉnh thoảng bị phân đoạn khi hết bộ nhớ thay vì ném std :: bad_alloc?
- 27. Làm thế nào để chuyển đổi một chương trình Python để một .exe chương trình Windows Runnable?
- 28. Làm thế nào để Daemonize một chương trình Java?
- 29. Làm thế nào để thay thế chương trình HyperLinkField trong ASP.NET GridView
- 30. Làm thế nào để gửi chuỗi khóa gián đoạn đến một quy trình Java?
Không rõ ràng. Bạn đang hiển thị tất cả bốn mảnh với nhau ở cuối.? –