android实现方法到不同的api级别

jon*_*nrz 4 java android android-annotations

我在谷歌开发者的一个Android视频中看到,他们实现了两种方法,并通过注释定义了应该根据api级别调用哪种方法.

不幸的是,我再也找不到视频了(我记不起哪个视频了),所以我在StackOverflow上搜索了这个问题,发现了这个:针对不同API级别的不同Java方法

在他使用注释@apilevel的问题中,我找不到那个注释.

基本上,我想要做的是:

@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
private int getDisplayWidth(Display display){
    Point size = new Point();
    display.getSize(size);
    return size.x;
}

@TargetApi(Build.VERSION_CODES.FROYO)
private int getDisplayWidth(Display display){
    return display.getWidth();
}
Run Code Online (Sandbox Code Playgroud)

但是ADT给了我重复的方法错误.

Com*_*are 6

使用:

@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
private int getDisplayWidth(Display display){
    if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB_MR2) {
      Point size = new Point();
      display.getSize(size);
      return size.x;
    }

    return display.getWidth();
}
Run Code Online (Sandbox Code Playgroud)

  • @jonathanrz:是的,在同一个类中没有办法让两个方法具有相同的签名(名称,参数,返回类型).`@TargetApi`不会改变它. (2认同)