2014-05-13 103 views
15

我使用getChildFragmentManager()在被編譯針對API級19的應用程序,用最小的SDK集到14getChildFragmentManager()和支持庫

getChildFragmentManager()在API 17被引入,以便在設備API級別運行當調用方法時,14,15或16將拋出NoSuchMethodError

我看過關於這個問題的所有其他StackOverflow問題,但他們似乎都沒有回答這個問題:有沒有什麼辦法讓getChildFragmentManager()方法在預API級別17的設備上工作?如果是這樣,怎麼樣?

該方法似乎不包含在v4或v13支持庫中。我已經嘗試了使用v4和v13支持庫的乾淨版本,但這似乎無法解決問題。

回答

17

有沒有什麼辦法讓getChildFragmentManager()方法可以在API級別17的設備上工作?如果是這樣,怎麼樣?

使用Android支持包(android-support-v4.jar,android.support.v4.app.Fragment)中的片段的回送端口。

該方法似乎不包含在v4或v13支持庫中。

是的,這就是,在 FragmentActivity,你需要爲了使用該片段補丁包,可以使用 Activity基類。

它來自backport的Fragment類,用於管理該片段的子片段。

我已經嘗試使用v4和v13支持庫的乾淨版本,但似乎沒有解決問題。

要麼你沒有改變 FragmentActivity Fragment反向移植,或您的支持庫JAR是舊的。 Here is a sample project演示使用 FragmentActivity Fragment backport及其getChildFragmentManager()

+10

['getChildFragmentManager()'](https://developer.android.com/reference/android/support/v4/app/Fragment.html#getChildFragmentManager ())在'Fragment'上,而不是'FragmentActivity' –

+1

@MarkCarter:很好 - 我已經編輯了答案。謝謝! – CommonsWare

0

你可以嘗試SupportFragmentManager代替:

yourFragment = (YourFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.playListFragment)