在現在採用的是Android SDK API級別棄用View
類的setBackgroundDrawable()
方法16.android上setBackgroundDrawable的解決方法?
的新方法是setBackground()
但當然這只是在API可用16
我怎樣才能解決辦法,如果我希望我的應用程序與以前的API級別兼容? (至少API 14)
目標是消除任何警告和@SupressWarnings不是我的解決方案。
在現在採用的是Android SDK API級別棄用View
類的setBackgroundDrawable()
方法16.android上setBackgroundDrawable的解決方法?
的新方法是setBackground()
但當然這只是在API可用16
我怎樣才能解決辦法,如果我希望我的應用程序與以前的API級別兼容? (至少API 14)
目標是消除任何警告和@SupressWarnings不是我的解決方案。
通常的方法是這樣的一個:
if (android.os.Build.VERSION.SDK_INT >= 16)
setBackground(...);
else
setBackgroundDrawable(...);
在另一方面,你可以使用感言:
try {
Method setBackground = View.class.getMethod("setBackground", Drawable.class);
setBackground.invoke(myView, myDrawable);
} catch (NoSuchMethodException e) {
setBackgroundDrawable(myDrawable);
}
IMO警告是不是有捕捉異常和不必要的反射更好。
因此可以在else子句中使用@SupressWarning? – Alexis
我已經添加了第二種方法來通過反射來解決您的問題。 – keyboardsurfer
沒有理由添加兩個代碼路徑。只要調用已棄用的方法,除非您的目標是16+或者實際上需要新API中的功能。 –
您可以使用
viewobj.setBackgroundResource(drawble_object);
設置位圖到ImageView的。
ImageView imageView =(ImageView)findViewById(R.id.imageSlice4); imageSlice4.setBackground(new BitmapDrawable(getResources(),slicedImagesArrayList.get(3)));
你試過'@TargetApi'註釋嗎? (看起來林特本身就是這樣建議的) – sandrstar
@SuppressWarnings *是解決方案。如果您的目標是API 14,並且您不需要新API的任何功能,那麼調用較舊的API並抑制警告是正確的。 –