2012-10-25 53 views
12

我遇到了ViewPager以及相關的FragmentPagerAdaptor,它們不是常規Android軟件包的一部分,但僅適用於V4支持包。看來我不能使用帶有android.app.Fragment的FragmentPagerAdaptor,因爲FragmentPagerAdaptor需要一個v4 FragmentManager來實例化。閱讀Difference between Activity and FragmentActivity這似乎是對齊 - 使用v4片段和相關的類或常規的android.app.Fragments。切勿混合。總是使用v4碎片而不是內置的android.app.Fragment?

更進一步,我看到沒有必要使用常規的android.app.Fragments,因爲它們不如v4支持包強大。 (引用另一個問題:The Android Support package is not only for backports of newer APIs. It is also for other classes that, for whatever reason, are not being added to the SDK, such as ViewPager and its supporting classes.)。我認爲唯一的缺點是v4支持庫與APK捆綁在一起,這意味着我的應用將佔用更多空間。

我正確地得出結論,我應該總是使用v4支持庫的片段,因爲那些包括更多的功能? (而且它們向後兼容,不要忘記。)

回答

9

我才意識到,這是可以使用android.app.Fragmentandroid.support.v4.view.ViewPager在一起的2.2/2.3設備的支持.. 。如果你使用android.support.v13.app.FragmentPagerAdapter. ..所以看起來支持包解決/改進了android.app.Fragment和android.support.v4.view.ViewPager之間的兼容性問題。真是一團糟。雖然這解決了我提出的特定示例,但我仍然在想,如果最佳選擇是在可用時代替內置類(例如android.app.Fragment)時總是使用v4類,即使我只擔心ICS和更新的設備?

+0

如果您只是擔心ICS及以上版本,請使用較新的片段。向後兼容的是有限的,因爲它們是爲了支持舊版本而製作的。另外,如果你已經回答了你自己的問題,那麼一定要接受你的答案,以便其他人可以從你的信息中受益。 – MCeley

+2

我多次從Google Engineers(@ IO + DevBytes)那裏聽說我們應該使用compat庫,即使我們的minSdk在14(Android 4.0)或更高版本中也是如此。爲什麼?因爲他們可以比Android OS在設備上更新更頻繁地更新支持庫。 (@Intrications指出錯誤版本號 - thx後編輯的評論) –

+0

@ZsoltSafrany,你有鏈接到任何特定的DevBytes或IO片段嗎? – yiati

0

在向後兼容性方面,確實使用v4支持包版本是最好的方法。

隨着設備向具有內置功能的操作系統的轉移,使用SDK版本可能會變得更加容易,因爲支持包中的所有功能都將包含在SDK中。

現在,堅持使用V4到提供其仍佔有很大的份額在Android設備餡餅

+4

我同意v4爲遺留設備提供支持是一項巨大的好處。但問題恰恰相反。即使世界上的每個人都擁有基於ICS的(或更新的)設備,我也不明白爲什麼我應該使用android.app.Fragment而不是V4 Fragment版本。原因是v4支持庫包含更多功能。 – TommyTh

相關問題