在编写android的代码时经常需要考虑低版本的兼容性问题,eclispe中创建android工程minimum sdk的版本小于target的版本时,有可能会自动生成一个appcompat_v7的工程。
1. Android 导入android.support.v7.cardview后,出现java.lang.ClassNotFoundException问题
这里是我手动创建v7包工程的步骤。
以appcompat_v7为例,在eclipse中, 点击 File -> Import -> Existing Android Code Into Workspace -> browse sdk目录下的 /extras/android/support/v7/appcompat , 勾选 copy projects into workspace -> finish.
我按照上面的方法导入cardview的包,将其标记为 library, 在android的工程中添加cardview的包后,
出现
java.lang.ClassNotFoundException: Didn't find class "android.support.v7.widget.CardView" on Path
的异常。
后来发现步骤并不完整。 参考 http://stackoverflow.com/questions/27179363/use-cardview-with-eclipse
完整的步骤
1. 打开 File -> Import -> Existing Android code into workspace –> Browse (sdk/extras/android /support/v7/cardview) –> ok –> Finish
2. 右击 cardview 项目 –> Properties –> Android –> 勾选 isLibrary –> Apply –> ok
3. 右击 自己的项目 –> Properties –> Android –> Add –> cardview –> apply –> ok
4. 右击 自己的项目 –> build path –> configure build path –>选项卡 libraries–>add jar–> 展开 cardview–> 展开libs–>选择 android.support.v7.widget.CardView.jar
5. 选项卡 order and export–>勾选 android.support.v7.widget.CardView.jar–>ok
2.继承AppcompatActivity时出现的问题
v7包ActionBarActivity不推荐使用后,用AppCompatActivity代替。
继承AppCompatActivity后, 发现Ecliipse报错
The type android.support.v4.app.TaskStackBuilder$SupportParentable cannot be resolved. It is indirectly referenced from required .class files
然后我尝试在build path中手动加入 v4 的包,Eclipse错误消失,但是编译运行时,又报错
activity is inconsistent
后来参考stackoverflow的解答
http://stackoverflow.com/questions/17851515/the-hierarchy-of-the-type-activity-is-inconsistent-when-extending-actionbaractiv
将主项目的v4的包从工程中移除,就OK了