我所拥有的是:
清单:
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="18" />
来源:
View view = createViewFromWhatever();
Bitmap bitmap = loadSomethingAddMore();
在我搜索的所有地方,这是被认可、建议的:
view.setBackgroundDrawable(new BitmapDrawable(bitmap));
但在API 18中已被弃用。我受到框架错误和操作系统级别缺失文档的困扰。我想尊重他们所说的话,并在崩溃时“这不是我的错”。
我甚至不能使用 new BitmapDrawable(bitmap)
,而需要改为 new BitmapDrawable(getActivity().getResources(), bitmap)
。如果我将方法更改为建议的方式:setBackground(new BitmapDrawable(getActivity().getResources(), bitmap));
将会出现以下错误信息:
调用需要API级别16(当前最小值为10):android.widget.RelativeLayout#setBackground
作为解决方案,我可以检查用户正在运行的版本,并进行if-else,然后我就会有一个带有if(isAndroidVersion10()) else if () ...
代码的代码。
是否有任何可接受的解决方案?
如果我通过反射避免了过时警告,那么在崩溃的情况下,我仍然有责任,因为我发布了具有过时方法的代码! -只是我调用方式不同。
如果我忽略该Lint,则会在低版本API上崩溃,已经测试过了。
当然,我希望支持API 10,因此无法接受此处的大多数答案。