一.v4包与V7及V13包的区别
1.android-support-v4 是谷歌推出的兼容包,最低兼容Android1.6的系统,里面有类似ViewPager等控件。ViewPager在Android 1.6以下的版本是不自带的,所以要实现ViewPager需要使用v4包中的ViewPager。其余控件类似。
Gradle引用方法:compile 'com.android.support:support-v4:21.0.3'
2.android-support-v7是谷歌推出的版本兼容包,最低兼容Android2.1的系统,这个包通常和appcompat-v7这个工程一起使用。
Gradle引用方法:compile 'com.android.support:appcompat-v7:21.0.3'
appcompat-v7这个工程可以让开发者统一开发,在任何系统版本下保证兼容性。涉及的内容有Theme,value,布局,新的控件,新的动画实现方式,包含了support-v4的全部内容,开发Android工程时,要兼容低版本都要导入v7工程。android studio在创建工程的时候默认导入了v7工程,并且将style使用了兼容style,给开发者提供了极大的方便。并且最新的v7包增加了很多material design的兼容类和素材,请及时更新。
3.android-support-v13是谷歌推出的版本兼容包,最低兼容Android3.2的系统。当初是为了开发平板做设计的。Android 3.x系统都是平板专用系统,但是3.x系统失败了。所以使用v13的包没有任何价值。
v7版本适用于任何版本的开发,保证了兼容性,所以在使用的时候一定要采用。
注意:
gradle引用appcompat-v7包的时候就不需要引用v4了,因为v7里默认包含了v4包;
compile ‘com.android.support:appcompat-v7:21.0.3’ 中的21代表API level 21推出的兼容包.
v4包冲突这个错误:多个module所引用的v4包版本不一致造成的; 把其他module的v4包修改成主module所使用的v4包即可!
二.android.support.v4.app.Fragment和android.app.Fragment区别
1.最低支持版本不同
android.support.v4.app.Fragment 兼容的最低版本是android:minSdkVersion="4" 即1.6版
2.需要导jar包
fragment android.support.v4.app.Fragment 需要引入包android-support-v4.jar3.在Activity中取的方法不同
android.app.Fragment使用 (ListFragment)getFragmentManager().findFragmentById(R.id.userList) 获得 ,继承Activityandroid.support.v4.app.Fragment使用 (ListFragment)getSupportFragmentManager().findFragmentById(R.id.userList) 获得 ,需要继承android.support.v4.app.FragmentActivity
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异常。