Mar*_*eth 5 java android deprecated suppress-warnings android-gradle-plugin
我有一个Android应用程序导入Android Studio.它包含一些Java库.到目前为止一切都有效.
以下方法:
@SuppressWarnings("deprecation")
private Drawable getDrawable() {
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH)
return activity.getResources().getDrawable(R.drawable.separator_gradient, activity.getTheme());
else
return activity.getResources().getDrawable(R.drawable.separator_gradient);
}
Run Code Online (Sandbox Code Playgroud)
始终打印折旧警告:
:androidAnsatTerminal:compileDebugJava
C:\...\src\main\java\de\ansat\terminal\activity\widgets\druckAssistent\FahrkartenArtSelector.java:131: warning: [deprecation] getDrawable(int) in Resources has been deprecated
return activity.getResources().getDrawable(R.drawable.separator_gradient);
^
Run Code Online (Sandbox Code Playgroud)
1警告
这不是我项目中唯一的@SuppressWarnings("弃用").在其他地方没有打印警告......
例如:
@SuppressWarnings("deprecation")
private void setBackgroundToNull(ImageView imgRight) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
imgRight.setBackgroundDrawable(null);
} else {
imgRight.setBackground(null);
}
}
Run Code Online (Sandbox Code Playgroud)
从我的AndroidManifest:
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="21" />
Run Code Online (Sandbox Code Playgroud)
我怎样才能摆脱这条警告信息?我不想在全球或其他地方发出警告.
编辑:如果我只是使用Theme参数调用getDrawable,原因是这发生在SDK15设备上:
java.lang.NoSuchMethodError: android.content.res.Resources.getDrawable
at de.ansat.terminal.activity.widgets.druckAssistent.FahrkartenArtSelector$3.getDrawable(FahrkartenArtSelector.java:128)
Run Code Online (Sandbox Code Playgroud)
我发现由于未知的原因此代码会触发警告:
private Drawable getShadow(Context context) {
@SuppressWarnings("deprecation")
final Drawable drawable = context.getResources().getDrawable(R.drawable.shadow_top);
return drawable;
}
Run Code Online (Sandbox Code Playgroud)
虽然这个等效代码不会:
private Drawable getShadow(Context context) {
final int resId = R.drawable.shadow_top;
@SuppressWarnings("deprecation")
final Drawable drawable = context.getResources().getDrawable(resId);
return drawable;
}
Run Code Online (Sandbox Code Playgroud)
提取辅助方法似乎也有效并为我解决了问题:
@SuppressWarnings("deprecation")
private Drawable getDrawable(Context context, int resId) {
return context.getResources().getDrawable(resId);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
702 次 |
| 最近记录: |