2012-08-05 62 views
1

我讀到getSupportFragmentManager(和其他getSupport函數)是爲了Honeycomb(3.0)下的Android版本而創建的。 API 11+的這些等效函數是getFragmentManager(以及其他沒有getSupport的函數)。強制使用API​​的getsupport函數14 +

我開始了一個minSdkVersion =「14」和targetSdkVersion =「15」的新項目。在文件夾庫中,我可以看到android-support-v4.jar,因爲min SDK版本是14,所以它不應該在那裏。 此外,我嘗試使用getFragmentManager,但它根本無法識別(我無法編譯)。 所以,我沒有選擇,只能使用getSupportManagerFragment ...

這是正常的嗎?

回答

1

如您所述,getFragmentManager()在API級別11+上可用。如果您不需要支持庫中的類,則可以從libs文件夾中刪除support-v4.jar,並使您的活動擴展爲Activity而不是FragmentActivity。

如果您未使用支持庫,那麼您的導入內容中不應包含「support.v4.app」。

感謝您提供來自@Espiandev的提示,如果您在Eclipse中選擇了「Tab + swipe application」模板,那麼它將自動包含支持庫,因爲此模板使用僅存在於支持庫中的ViewPager類。

+0

這並不是說你「不應該使用它們」......更重要的是它沒有必要。如果您在新設備上使用支持庫,應用程序不會中斷... – 2012-08-05 18:47:07

+1

如果您選擇了「Tab +輕掃應用程序」或類似模板,則可能會出現這種情況。 ViewPager類目前與不支持的Fragment系統不兼容。 – 2012-08-05 18:49:51

+0

@Espiandev是的,可能就是這樣。 – 2012-08-05 18:52:46

0

當您創建項目時,Eclipse可能會自動將支持庫添加到您的構建路徑,這就是爲什麼它不能識別getFragmentManager。雖然沒有必要,但在minSdkVersion大於或等於11的應用程序上使用支持庫是完全正確的。事實上,你甚至可能會考慮這樣做,因爲它可以讓以後支持舊設備變得更容易。

+0

包括支持庫可能會增加二進制文件的大小,所以如果你不需要它,你可能不應該包含它。 我的理解是,如果您的minSdkVersion支持它,並且您擁有本機類導入(完全限定名稱中沒有support.v4.app的類),那麼使用支持庫不會阻止您調用getFragmentManager。對? – almalkawi 2012-08-05 19:02:11