【问题标题】:android implement methods to different api levelsandroid实现不同api级别的方法
【发布时间】:2013-09-27 18:30:28
【问题描述】:

我在google开发者的android视频中看到他们实现了两个方法,并通过注解定义了基于api级别应该调用什么方法。

不幸的是,我再也找不到视频了(我不记得是哪个视频了),所以我在 StackOverflow 上搜索了这个问题,发现了这个问题:Different Java methods for different API Levels

在问题中他使用了注释@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();
}

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

【问题讨论】:

    标签: java android android-annotations


    【解决方案1】:

    用途:

    @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();
    }
    

    【讨论】:

    • 感谢您的回答,您对这个问题的回答是:stackoverflow.com/questions/14341042/… 我明白@TargetApi 是什么。
    • 我相信实现我想要的唯一方法是使用类重载。
    • @jonathanrz:是的,没有办法在同一个类中拥有两个具有相同签名(名称、参数、返回类型)的方法。 @TargetApi 不会改变这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    相关资源
    最近更新 更多