美文网首页
findViewById为什么不用强转了。

findViewById为什么不用强转了。

作者: 小马要加油 | 来源:发表于2020-07-10 14:14 被阅读0次

前言

工作时有个需求,把往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;
    }

相关文章

  • findViewById为什么不用强转了。

    前言 工作时有个需求,把往Android28里面跑的代码放到android 25上去跑,结果编译就gg了/ 在开发...

  • Butterknife总结

    Butterknife用途 Butterknife的作用是减少code,不用再写很多findViewById, s...

  • ButterKnife基本使用

    ButterKnife框架使用可以方便我们不用写大量的重复繁琐的findViewById和setOnClickLi...

  • Java泛型

    看到appcompat-v7-26中findViewById不用强制类型转换了(代码见下方), 虽然 findVi...

  • 使用kotlin过程中遇到的坑

    1、activity中使用kotlinx可以不用findViewById方法就可以使用控件id,但是fragmen...

  • Kotlin入门指南

    Kotlin的优势 代码简洁高效、强大的when语法,不用写分号结尾,findViewById光荣退休,空指针安全...

  • findViewById()

    欢迎访问[Android日记][1],如有转载请注明Android日记 http://androiddiary.s...

  • findViewById

    findViewById分为两种,1.acivity中的findViewById 调用Window中的findVi...

  • ViewBinding

    ViewBinding 与 findViewById 的区别与使用 findViewById 相比,视图绑定具有一...

  • Android Kotlin环境使用ButterKnife

    Butter Knife 黄油刀大家应该都挺熟悉的,有这个之后,就不用写一堆的findViewById,体力活,最...

网友评论

      本文标题:findViewById为什么不用强转了。

      本文链接:https://www.haomeiwen.com/subject/goqmcktx.html