android.support.v4.app.Fragment和android.app.Fragment区别

1.最低支持版本不同

android.app.Fragment 兼容的最低版本是android:minSdkVersion=”11” 即3.0版

android.support.v4.app.Fragment 兼容的最低版本是android:minSdkVersion=”4” 即1.6版

2.需要导jar包

fragment 在定义的时候,要导入的包不同

android.support.v4.app.Fragment 需要引入包android-support-v4.jar

android.app.Fragment  需要导入的是android-app.jar

3.继承的父类不同,在fragmentManager  在Activity中取的方法不同

android.support.v4.app.Fragment使用  fragmentManager=getSupportFragmentManager()获得 ,并且当前的类必须继FragmentActivity

android.app.Fragment使用 fragmentManager=getFragmentManager() 获得  ,继承Activity即可。

4.<fragment>标签的使用情况(这点最重要了,也是决定你到底使用v4包中的Fragment还是app包的fragment

v4包中的Fragment在Activity的布局中是可以使用<fragment>标签的,有些博客中也叫静态地载入fragment。

android.app.Fragment在Activity布局中是不可以使用<fragment>标签的,需要在程序中通过add或者replace的方式添加。

总结起来就是:当这个Activity的布局中有fragment标签的时候,这个Activity必须继承FragmentActivity,也就是使用V4包的fragment,否则就会抛出android.view.InflateException: Binary XML file line #69: Error inflating class fragment异常。

题外话:

我们使用Fragment的时候,选择哪个包下的Fragment呢?

到底是用Android.app下的Fragment还是用的android.support.v4.app包下的Fragment?

我们都知道Fragment是3.0(API 11)后引入的,那么如果开发的app需要在3.0以下的版本运行呢?比如还有一点点市场份额的2.3!

于是乎,v4包就这样应运而生了,而最低可以兼容到1.6版本!

至于使用哪个包看你的需求了,现在3.0下手机市场份额其实已经不多了,随街都是

4.0以上的,所以这个时候,你可以直接使用app包下的Fragment,然后调用相关的方法

通常都是不会有什么问题的;如果你Fragment用了app包的,FragmentManager和FragmentTransaction

都必须是app包的

要么  全部用app,要么全部用v4,不然可是会报错的哦!

            </div>

1.最低支持版本不同

android.app.Fragment 兼容的最低版本是android:minSdkVersion=”11” 即3.0版

android.support.v4.app.Fragment 兼容的最低版本是android:minSdkVersion=”4” 即1.6版

2.需要导jar包

fragment 在定义的时候,要导入的包不同

android.support.v4.app.Fragment 需要引入包android-support-v4.jar

android.app.Fragment  需要导入的是android-app.jar

3.继承的父类不同,在fragmentManager  在Activity中取的方法不同

android.support.v4.app.Fragment使用  fragmentManager=getSupportFragmentManager()获得 ,并且当前的类必须继FragmentActivity

android.app.Fragment使用 fragmentManager=getFragmentManager() 获得  ,继承Activity即可。

4.<fragment>标签的使用情况(这点最重要了,也是决定你到底使用v4包中的Fragment还是app包的fragment

v4包中的Fragment在Activity的布局中是可以使用<fragment>标签的,有些博客中也叫静态地载入fragment。

android.app.Fragment在Activity布局中是不可以使用<fragment>标签的,需要在程序中通过add或者replace的方式添加。

总结起来就是:当这个Activity的布局中有fragment标签的时候,这个Activity必须继承FragmentActivity,也就是使用V4包的fragment,否则就会抛出android.view.InflateException: Binary XML file line #69: Error inflating class fragment异常。

题外话:

我们使用Fragment的时候,选择哪个包下的Fragment呢?

到底是用Android.app下的Fragment还是用的android.support.v4.app包下的Fragment?

我们都知道Fragment是3.0(API 11)后引入的,那么如果开发的app需要在3.0以下的版本运行呢?比如还有一点点市场份额的2.3!

于是乎,v4包就这样应运而生了,而最低可以兼容到1.6版本!

至于使用哪个包看你的需求了,现在3.0下手机市场份额其实已经不多了,随街都是

4.0以上的,所以这个时候,你可以直接使用app包下的Fragment,然后调用相关的方法

通常都是不会有什么问题的;如果你Fragment用了app包的,FragmentManager和FragmentTransaction

都必须是app包的

要么  全部用app,要么全部用v4,不然可是会报错的哦!

            </div>

猜你喜欢

转载自blog.csdn.net/hizhangyuping/article/details/79643448