在开发Android软件时,当我们有些类说对应的库未导入时会在代码中暂时显示红色(此处以Android studio的开发环境为例),但是我们在导入库时,常需要我们对Android支持库进行正确地选择。
Android支持库的作用
Android提供了支持库(如:android.support.v4.app),它的目的是为了低版本的代码使用一些高版本API的部分新特性。
例如:你当时开发的某App的API使用的是Android 1.6,你仍然需要在保持对此低版本API的兼容性同时还想使用高版本才会有的Fragment(Android 3.0以上才出现的API),你可以通过导入android.support.v4.app支持库来实现。
注:这些支持库在Android SDK目录路径下的extras目录下可查看到。
引入支持库时的注意点
但是我们要注意在导入支持库时要小心,不要引起不兼容问题。
(注:我下面举例的project代码的最低SDK版本选择的是Android4.4(即API 19))
在Android studio中对没有导入相应库的类会显示红色如下图:我们可以将输入位置选中在相应的类上,然后使用快捷方式(Alt+Enter)来便捷地导入相应的库,但请注意这是有两种可能:
1)单一选择导入库:
现在我要为我的AppCompatActivity导入相应的库,如下图:
如上图,我在弹出的快捷菜单中选择“Import class”后,IDE自动在代码的Import段自动加入了相应的支持库(android.support.v7.app.AppCompatActivity),这是因为IDE判断出我的最低sdk版本是Android 4.4,这时要使用AppCompatActivity只有导入v7包中的AppCompatActivity类。这就是单一选择导入库,这种情况最简单,也不会出错。
2)多选择地导入库
但是有时候在Import class时,需要你去选择导入那一个库,如下图:
这时如果选不好时会在编译时出现错误,那么我们应该如何选择呢?在上图中出现了两个选择项,这表明你的project 的最低SDK版本以及v4支持库中都包含了FragmentManager这个类,这时需要你保持各java代码文件中对FragmentManager导入库的一致,如果不一致,这会出现编译错误,这是因为虽然在不同库中都有FragmentManager这个类,但他分别处在不同的命名空间里,其本质是不一样的。这种情况下建议不要选择Android支持库中的类,而是直接选android.app中的类,这样能很简单地保持导入库的一致;如果非要选择支持库中的类(如上图中的android.support.v4.app.FragmentManager),不仅该类的导入库在所有代码文件中要保持一致,而且关联到该类的其他类的导入库也要做相应修改,由于类之间的相互依赖关系常常很复杂,这将会使你陷入相互兼容的泥潭。