为了账号安全,请及时绑定邮箱和手机立即绑定

无需强制转换findViewById的结果?

无需强制转换findViewById的结果?

蛊毒传说 2019-10-25 15:23:28
最近,我发现AndroidStudio提醒我删除一些类强制转换。我记得在过去,我们必须强制转换findViewById的结果,但是现在没有必要了。findViewById的结果仍然是View,所以我想知道为什么我们不需要强制转换类?我找不到提到的任何文档,有人可以找到任何文档吗?
查看完整描述

3 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

从API 26开始,findViewById将推理用作其返回类型,因此您不再需要强制转换。


旧定义:


View findViewById(int id)

新定义:


<T extends View> T findViewById(int id)

因此,如果您compileSdk的年满26岁,则意味着您可以使用此:)


查看完整回答
反对 回复 2019-10-25
?
catspeake

TA贡献1111条经验 获得超0个赞

根据这篇文章:


以下函数依赖于Java的泛型自动类型推断,从而消除了手动转换的需要:


protected <T extends View> T findViewById(@IdRes int id) {

    return (T) getRootView().findViewById(id);

}


查看完整回答
反对 回复 2019-10-25
?
九州编程

TA贡献1785条经验 获得超4个赞

如果您使用View类的常用属性(例如可见性)或某些常用方法(例如onClick()),则Android Studio会提醒您删除投射


例如:


((ImageView) findViewById(R.id.image_car)).setVisibility(View.VISIBLE);

在这种情况下,您可以简单地编写:


findViewById(R.id.image_car).setVisibility(View.VISIBLE);


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 687 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信