2014-02-18 62 views
10

Android支持庫v13應該爲來自Android 3.1的較新API提供支持。但是,據我所知,不支持兒童碎片。具體來說,getChildFragmentManager()在哪裏? v13支持庫依賴於本地片段,直到API級別17才添加此方法。我有一個應用程序,其最低SDK級別爲14,所以我應該能夠使用v13支持庫,但似乎我不能。支持庫v13中的getChildFragmentManager在哪裏?

我不想一路回到v4的支持庫,並承擔所有的重量。該v13庫是完美的,否則。

+2

關於v4庫的誤解:它並不意味着僅在v12左右有用,它向下兼容v4。 – zapl

+0

「重量」是什麼意思? v13庫已經包含了所有的v4庫,如果您只使用v14 +方法,那麼應該只需要幾個詞替換。 – ianhanniballake

+0

如果我將最小SDK級別設置爲14,則不需要使用它。 –

回答

3

Android的支持庫V13應該從Android 3.1

提供新的API的支持

不是真的。

然而,據我可以告訴有兒童不支持片段

正確的。您不能從Java中的外部庫中更改現有類。 android.app.Fragment已存在,因此庫不能將方法添加到Fragment

我有一個最低SDK級別14的應用程序,所以我應該能夠使用v13支持庫,但它似乎我不能。

您可以根本不使用嵌套片段。或者,使用片段backport。

我不想去所有的方式回到V4支持庫,並採取所有它的重量

android-support-v13.jarandroid-support-v4.jar大。

如果v13包含v4的全部內容,那麼它的目的是什麼?

它增加了一些類,像FragmentPagerAdapterFragmentStatePagerAdapter原生片段的實現,不需要的對不具備原生片段誰的應用程序,因爲他們的android:minSdkVersion低於11

的V13庫使用本地片段和活動,不支持片段

android-support-v13.jar包含所有android.support.v4和所有從SDK的android.support.v13類。

+4

感謝澄清,但這種情況似乎是一團糟,比我想象的更糟糕。如果我正在使用支持庫,那麼爲什麼我需要一個採用本機碎片的FragmentPagerAdapter?我應該只用一切支持片段。所以我仍然沒有看到v13支持庫的目的。這是一團糟。 –

+0

@GregEnnis:「如果我正在使用支持庫,那麼爲什麼我需要一個採用本機碎片的FragmentPagerAdapter?」 - 不是每個人都需要嵌套的片段。那些不需要嵌套片段的人可以使用本地片段實現。 *您*是決定*您*想使用嵌套片段的人,因此您需要使用更長一點的backport。 – CommonsWare

+1

嗯,我仍然認爲使用v13與本地碎片更輕量級,以及如果您的目標是SDK 14,要走的路,因爲proguard會優化我不需要的所有支持垃圾。所以我只是不會使用嵌套片段,儘管我仍然認爲這是一團糟。 –

6

如果你想在本地片段中使用嵌套片段。使用getFragmentManager()。

如果要在支持庫Fragment中使用嵌套片段,請使用getChildFragmentManager()。

剛發現這個意外。有用。 :)

+0

同意 - 我在方法getChildFragmentManager()上調用v4 Fragment庫並且它可以工作。 – Simon

+1

我在fragmentPagerAdapter中使用嵌套片段。它工作正常!一個警告:我不得不在父級的onPause()方法中分離我的嵌套片段,否則fragmentManager會嘗試將嵌套片段插入到視圖中,但視圖不存在。 – mcissel

+0

谷歌只是忘了添加getChildFragmentManager()來支持庫v13! –

0

您應該只使用v4支持庫碎片。那麼你可以使用嵌套的片段w/api 14.這樣做沒有真正的缺點。它們已經包含在v13支持庫中(它包含了v4的所有內容)

+0

v13不包含getChildFragment! – jonney

+0

它當然會。 http://developer.android.com/reference/android/support/v4/app/Fragment.html#getChildFragmentManager – dabluck

+0

沒有。需要v4才能訪問該方法 – jonney

相關問題