问题引入
假设项目使用了API 19 的方法,但是自身项目最低支持版本低于API19 编译时就会报错,如下图所示,如果我们忽略了,可能会导致在低版本系统的崩溃。
使用高版本API报红
低版本NoSuchMethodError异常
解决办法
ide提示
- 使用@RequiresApi和@TargetApi 注解,只能把警告去除,实际运行时还是会崩溃
- 只有判断系统版本才能真正决绝运行异常
比如上图的问题只能通过以下代码才能决绝问题
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
new PopupWindow(this).showAsDropDown(view, 10, 10, Gravity.BOTTOM);
} else {
new PopupWindow(this).showAsDropDown(view, 10, 10);
}
网友评论