什么是Fragment
為了在Android上為用戶提供動態(tài)的、多窗口的交互體驗,我們需要將UI組件和Activity操作封裝成模塊進(jìn)行使用,使得我們可以在activity中對這些模塊進(jìn)行切入切出操作??梢杂?a target="_blank" rel="nofollow">Fragment來創(chuàng)建這些模塊,F(xiàn)ragment就像一個嵌套的activity,擁有自己的布局(layout)并管理自己的生命周期。
一個fragment定義了自己的布局后,它可以在activity中與其他的fragment生成不同的組合,從而為不同的屏幕尺寸生成不同的布局(一個小的屏幕一次也許只能一個fragment,大的屏幕則可以顯示更多)。
FragmentActivity和Activity的區(qū)別
fragment是3.0以后的東西,為了在低版本中使用fragment就要用到android-support-v4.jar兼容包,而fragmentActivity就是這個兼容包里面的,它提供了操作fragment的一些方法,其功能跟3.0及以后的版本的Activity的功能一樣。
下面是API中的原話:
FragmentActivity is a special activity provided in the Support Library to handle fragments on system versions older than API level 11. If the lowest system version you support is API level 11 or higher, then you can use a regular Activity.
- fragmentactivity 繼承自activity,用來解決android3.0 之前沒有fragment的api,所以在使用的時候需要導(dǎo)入support包,同時繼承fragmentActivity,這樣在activity中就能嵌入fragment來實現(xiàn)你想要的布局效果。
- 當(dāng)然3.0之后你就可以直接繼承自Activity,并且在其中嵌入使用fragment了。
- 獲得Manager的方式也不同:
3.0以下:getSupportFragmentManager()
3.0以上:getFragmentManager()
Fragment和v4.app.Fragment的區(qū)別:
- Android.app.Fragment:兼容的最低版本是android:minSdkVersion="11"
因此你的應(yīng)用不能兼容3.0以下的應(yīng)用。
可以使用<fragment>標(biāo)簽的,這點很重要,如果是用android.support.v4.app.Fragment的話,是不能是用<fragment>標(biāo)簽的,會拋出android.view.InflateException: Binary XML file line #7: Error inflating class fragment異常 - android.support.v4.app.Fragment:可以兼容到1.6的版本,不能使用<fragment>標(biāo)簽,需要在程序中通過add或者replace的方式添加,同時還需要
android-support-v4.jar