前言
工作时有个需求,把往Android28里面跑的代码放到android 25上去跑,结果编译就gg了/
image.png
在开发android 28 时,用sonar检测一个一个把强转类型给删的,现在又要我一个一个加回来,为什么!!!
对啊 为什么呢。
原因
其实去高版本sdk上看,会发现
@Nullable
public final <T extends View> T findViewById(@IdRes int id) {
if (id == NO_ID) {
return null;
}
return findViewTraversal(id);
}
protected <T extends View> T findViewTraversal(@IdRes int id) {
if (id == mID) {
return (T) this;
}
return null;
}
而在sdk 25的版本上代码没有这个泛型,这也就是为什么要强转啦。 那是不是我把sdk25的find同步成高版本的实现我就不用在代码上改了呢!哈哈哈~
/**
* Look for a child view with the given id. If this view has the given
* id, return this view.
*
* @param id The id to search for.
* @return The view that has the given id in the hierarchy or null
*/
@Nullable
public final View findViewById(@IdRes int id) {
if (id < 0) {
return null;
}
return findViewTraversal(id);
}
/**
* {@hide}
* @param id the id of the view to be found
* @return the view of the specified id, null if cannot be found
*/
protected View findViewTraversal(@IdRes int id) {
if (id == mID) {
return this;
}
return null;
}
网友评论