Tôi đang sử dụng thư viện Tương thích Android để triển khai các đoạn và đã mở rộng mẫu bố cục sao cho một đoạn có chứa nút bật ra một đoạn khác.
Trong khung lựa chọn bên trái tôi có 5 mục có thể chọn - A B C D E
.
Mỗi phần tải lên một đoạn (thông qua FragmentTransaction:replace
) trong khung chi tiết -a b c d e
Bây giờ tôi đã mở rộng đoạn e
để chứa một nút tải lên một đoạn khác e1
trong khung chi tiết. Tôi đã thực hiện điều này trên e
phương pháp onClick của đoạn như sau:
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.details_frag, newFrag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Nếu tôi thực hiện các lựa chọn sau:
E - e - e1 - D - E
Sau đó, đoạn e
nằm trong khung chi tiết. Điều này là tốt và những gì tôi muốn. Tuy nhiên, nếu tôi nhấn back
nút vào thời điểm này thì không có gì. Tôi phải bấm vào nó hai lần vì e1
vẫn còn trên stack. Hơn nữa, sau khi nhấp vào xung quanh tôi đã có một ngoại lệ con trỏ null trong onCreateView:
Để 'giải quyết' vấn đề này, tôi đã thêm vào bất cứ khi nào A B C D E
được chọn:
FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
Chỉ tự hỏi liệu đây là giải pháp chính xác hay liệu tôi nên làm điều gì đó khác biệt?