Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android@SuppressWarnings在语句级别,而不是方法级别_Android_Android Gradle Plugin_Android Lint_Deprecation Warning - Fatal编程技术网

Android@SuppressWarnings在语句级别,而不是方法级别

Android@SuppressWarnings在语句级别,而不是方法级别,android,android-gradle-plugin,android-lint,deprecation-warning,Android,Android Gradle Plugin,Android Lint,Deprecation Warning,TL;DR:Android的@SuppressWarnings(“弃用”)或类似功能能否应用于单个语句,而不是整个方法 我有一个方法myMethod,它使用了不推荐使用的方法ImageView.setAlpha(): 为了避免在Jelly Bean和后续版本中使用不推荐的方法,同时提供向后兼容性,方法myMethod可以重写如下: public void myMethod(ImageView icon) { if (android.os.Build.VERSION.SDK_INT

TL;DR:Android的
@SuppressWarnings(“弃用”)
或类似功能能否应用于单个语句,而不是整个方法

我有一个方法
myMethod
,它使用了不推荐使用的方法
ImageView.setAlpha()

为了避免在Jelly Bean和后续版本中使用不推荐的方法,同时提供向后兼容性,方法
myMethod
可以重写如下:

public void myMethod(ImageView icon) { 
  if (android.os.Build.VERSION.SDK_INT 
                                >= android.os.Build.VERSION_CODES.JELLY_BEAN)
     icon.setImageAlpha(0xFF);
  else 
     icon.setAlpha(0xFF);
}
此外,Gradle/Lint生成的命令行警告可以通过在方法
myMethod
前面加上
@SuppressWarnings(“弃用”)
来抑制。但是,这会抑制由方法
myMethod
生成的所有不推荐的警告,而不仅仅是由语句
icon.setAlpha(0xFF)
生成的单个警告


我是否可以抑制语句
icon.setAlpha(0xFF)
生成的单个弃用警告,而不是抑制方法
myMethod
生成的所有弃用警告?

如果使用Android Studio,可以按如下方式实现:

 //noinspection deprecation
 icon.setAlpha(0xFF);
供您将来参考:在Android Studio中可以轻松生成正确的格式,如下所示:

public void myMethod(ImageView icon) { 
  if (android.os.Build.VERSION.SDK_INT 
                                >= android.os.Build.VERSION_CODES.JELLY_BEAN)
     icon.setImageAlpha(0xFF);
  else 
     icon.setAlpha(0xFF);
}
  • 在抛出警告的语句上按alt+Enter
  • 然后展开选项
    弃用API用法
    选项
  • 单击语句的
    Suppress
  • 下图显示了该过程:

    在您的情况下,由于您未使用IDE:

    • 不幸的是,没有直接的方法在方法体级别实现它。因为您已经在单个方法中移动了不推荐使用的部分,并用
      @SuppressWarnings
      标记了它,所以这应该是您能够实现的最好方法
    • 有些帖子声称通过使用完全限定的类名而不是
      import
      解决了这个问题。但是这个问题似乎已经在Java9中解决了。由于目前流行的android java版本是8.x,这在短期内应该会有所帮助。有关更多详细信息,请参阅此

    这不起作用,我得到了
    警告:[弃用]ImageView中的setAlpha(int)已弃用
    。也许我需要做些别的事情,因为我是从命令行工作的,而不是从IDE(例如androidstudio)工作的。