Tôi có một ứng dụng với hệ thống phân cấp như thế này:Android FragmentTab chủ và Những mảnh vỡ bên trong mảnh vỡ
FragmentTabHost (Main Activity)
- Fragment (tab 1 content - splitter view)
- Fragment (lhs, list)
- Framment (rhs, content view)
- Fragment (tab 2 content)
- Fragment (tab 2 content)
Tất cả các quan điểm đoạn đang được thổi phồng từ nguồn lực.
Khi ứng dụng bắt đầu mọi thứ xuất hiện và có vẻ ổn. Khi tôi chuyển từ tab đầu tiên sang tab khác và ngược lại, tôi nhận được các ngoại lệ thổi phồng cố gắng tạo lại các giao diện của tab 1.
Đào sâu hơn một chút, đây là những gì đang xảy ra:
- Trên tải đầu tiên, lạm phát quan điểm chia làm hai mảnh con của nó sẽ được bổ sung cho người quản lý mảnh.
- Khi chuyển đổi khỏi tab đầu tiên, chế độ xem của nó bị hủy nhưng các đoạn con sẽ được để trong trình quản lý phân đoạn
- Khi chuyển trở lại tab đầu tiên, chế độ xem được tăng lại và vì các đoạn con cũ vẫn còn trong quản lý mảnh vỡ, một ngoại lệ được ném ra khi các mảnh con mới được khởi tạo (bằng cách lạm phát)
Tôi đã loại bỏ các mảnh con từ trình quản lý phân đoạn (tôi đang sử dụng Mono) và bây giờ tôi có thể chuyển đổi các tab mà không có ngoại lệ.
public override void OnDestroyView()
{
var ft = FragmentManager.BeginTransaction();
ft.Remove(FragmentManager.FindFragmentById(Resource.Id.ListFragment));
ft.Remove(FragmentManager.FindFragmentById(Resource.Id.ContentFragment));
ft.Commit();
base.OnDestroyView();
}
Vì vậy, tôi có một vài câu hỏi:
- Sản phẩm trên cách chính xác để làm điều này?
- Nếu không, tôi nên làm như thế nào?
- Dù bằng cách nào, việc lưu trạng thái thể hiện buộc vào tất cả điều này để tôi không bị mất trạng thái xem khi chuyển đổi tab?
OK, điều đó có vẻ đầy hứa hẹn. Làm thế nào để tôi nói với người thổi phồng để sử dụng người quản lý phân đoạn con thay vì người quản lý con cái? –
Bạn thêm đoạn con vào bên trong đoạn cha của bạn bằng cách sử dụng mã của đoạn cha mẹ sử dụng ChildFragmentManager để thêm các phần con của nó. Sau đó, inflater rằng phương thức gọi lại onCreateView của bạn (đoạn con) của bạn cung cấp: https://developer.android.com/reference/android/app/Fragment.html#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle). –
Bạn có thể cần phải làm một số googling/stackoverlowing hơn để xem làm thế nào để đối phó với các mảnh con trong Mono. Tôi không thể giúp bạn ở đó (tôi sử dụng Java). –