在做项目的时候,想通过ActionBar的方式来实现选项卡,actionbar是在3.0提出来的,为了做到向下兼容,需要引用 android-support-v7-appcompat项目
(由于本人eclipse里面的ADT版本不是22.6.x,所以在创建工程的时候没有生成android-support-v7-appcompat项目,所以需要单独导入此工程)
操作步骤:
(1) 首先需要导入此项目 android-support-v7-appcompat
此项目我是从同事那拷贝过来的,因为它的ADT是最新的22.6.x, 在 ${ANDROID_SDK_HOM}\extras\android\support\v7 找到了appcompat 项目
为了省时间我就直接将此项目拷贝过来。
File -> Import -> Android -> Existing Android Code Into Workspace (勾选上 Copy projects into Workspace,方便以后想修改引用项目,对原有不影响,原有的相当于备份)
导入完成后,如果在控制台出现以下类似错误提示:
[2014-12-05 10:52:50 - android-support-v7-appcompat] Unable to resolve target 'android-16'
那么需要修改android-support-v7-appcompat项目目录下的project.properties文件中的target值,以你当前SDK版本为准,我的SDK版本是17,所以就是target=android-17
(这里不建议直接修改这个文件,可通过 选中项目,右键属性 ->Android -> 切换SDK的方式来修改,这样项目会重新加载SDK,重新编译项目,同时project.properties文件中的target会自动被修改的)
(2) 导入完成后,开发项目引用 android-support-v7-appcompat
选中开发项目,右键属性 ->左侧 Android -> 右侧的Library 点击Add... -> 选中 android-support-v7-appcompat -> Apply -> OK
(3) 创建Activity 继承ActionBarActivity ,发现编译报错,找不到ActionBarActivity类;
检查了Android dependencies是有android-support-v7-appcompat.jar这个jar包的,而且这个jar就是android-support-v7-appcompat 工程libs 目录下的,
同时在android-support-v7-appcompat.jar 里面是的 android.support.v7.app是能找到ActionBarActivity的,
我又尝试了直接写 import ,发现只能import android.support.v7.appcompat.R(这是资源),但就是import不了android.support.v7.app
没办法,我只能这样处理了:
(a) 将引用项目的android-support-v7-appcompat 工程libs 目录下的android-support-v4.jar,android-support-v7-appcompat.jar 拷贝到开发项目工程的libs目录下,
覆盖开发项目工程libs目录下的android-support-v4.jar(android-support-v7-appcompat.jar用的是它对应的android-support-v4.jar,所以需要覆盖工程libs目录下的android-support-v4.jar)
(b) 将 android-support-v7-appcompat 工程libs 目录下的android-support-v4.jar,android-support-v7-appcompat.jar删除掉
(c) 重新编译开发项目工程,发现OK了,能引用ActionBarActivity
同时发现Android Private Libraries出现一个android-support-v7-appcompat.jar,原来只有一个android-support-v4.jar
就这样,问题就解决了,但就是不明白之前那样引用工程,为什么使用不了ActionBarActivity,
之前弄别的工程引用外部工程也能正常使用外部工程的某个类的,单就这个android-support-v7-appcompat 工程不行,很奇怪!