由于android从3.0版本起就开始支持actionbar,所以在andriod 3.0以上的版本中使用GreenDroid都会遇到方法冲突问题

avd.png

现在android的开发平台基本都是4.0版本了,但是GreenDroid的源码好像还是一直存在这个问题。


直接下载DreenDroid的源码,然后导入GreenDroid包到eclipse,编译的时候遇到activity中定义的getActionBar()方法会出现错误:

Multiple markers at this line
    - The return type is incompatible with Activity.getActionBar()
    - overrides android.app.Activity.getActionBar


原因是GreenDroid的activity继承自android.app.Activity,在android 3.0之后这个Activity类中就包含了getActionBar方法,所以DreenDroid的getActionBar方法在编译的时候就会作为重载方法,但是返回的类型却与父类Activity不一致,就导致了这个编译错误。

目前我的解决方法是直接把GreenDroid的方法名称改为getGDActionBar(),然后将其他地方对此方法的调用做相应的修改。

因为Activity必须实现父类的抽象getActionBar方法,所以还要新增一个getActionBar方法,返回null即可:

public android.app.ActionBar getActionBar() {
    return null;
}
 

PS:在GreenDroid中还有一个问题就是默认的开发包会依赖google的jar包,但是很多时候我们开发应用根本不会用到google map之类的功能,编译的时候也没有使用google api,这种情况直接将google相关的类文件删除即可。


转载请注明出处:一介码农