2014-05-13 24 views
15

Tôi đang sử dụng getChildFragmentManager() trong một ứng dụng được biên soạn với mức API 19, với bộ SDK tối thiểu để 14.getChildFragmentManager() và hỗ trợ thư viện

getChildFragmentManager() đã được giới thiệu trong API 17, vì vậy các thiết bị chạy ở mức API 14, 15 hoặc 16 sẽ ném một số NoSuchMethodError khi phương thức được gọi.

Tôi đã xem xét tất cả các câu hỏi khác về StackOverflow về vấn đề này, nhưng không có câu hỏi nào trả lời câu hỏi này: có cách nào để có phương pháp getChildFragmentManager() hoạt động trên các thiết bị trước API cấp 17 không? Nếu vậy, làm thế nào?

Phương pháp này dường như không được bao gồm trong thư viện hỗ trợ v4 hoặc v13. Tôi đã thử xây dựng sạch với cả hai thư viện hỗ trợ v4 và v13, nhưng điều đó dường như không giải quyết được vấn đề.

Trả lời

17

có cách nào để phương thức getChildFragmentManager() hoạt động trên các thiết bị trước API cấp 17 không? Nếu vậy, làm thế nào?

Sử dụng backport các đoạn từ gói Hỗ trợ Android (android-support-v4.jar, android.support.v4.app.Fragment).

Phương pháp này dường như không được bao gồm trong thư viện hỗ trợ v4 hoặc v13.

Vâng, đó là, trên FragmentActivity, lớp Activity cơ sở bạn cần phải sử dụng để sử dụng các mảnh vỡ backport.

Đó là trên lớp Fragment từ cổng sau, để quản lý các đoạn con của đoạn đó.

Tôi đã thử xây dựng sạch với cả thư viện hỗ trợ v4 và v13, nhưng điều đó dường như không giải quyết được vấn đề.

Hoặc bạn không thay đổi để FragmentActivity các Fragment backport, hoặc hỗ trợ thư viện lọ của bạn là cũ. Here is a sample project thể hiện việc sử dụng FragmentActivity cổng sau FragmentgetChildFragmentManager().

+10

[ 'getChildFragmentManager()'] (https://developer.android.com/reference/android/support/v4/app/Fragment.html#getChildFragmentManager()) là trên 'Fragment', không phải' FragmentActivity' –

+1

@MarkCarter: Tốt bắt - Tôi đã chỉnh sửa câu trả lời. Cảm ơn! – CommonsWare

0

Bạn có thể thử các SupportFragmentManager thay vì:

yourFragment = (YourFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.playListFragment) 
Các vấn đề liên quan