我最近刚开始学习如何开发一个应用程序,我对java也相当陌生,所以这个问题听起来有点傻。在初始化按钮或任何其他小部件时,我看到大多数教程都使用类似于这个Button TranslateBtn = (Button) findViewById(R.id.TranslateBtn);的代码行,但是当我试图像这个Button TranslateBtn = findViewById(R.id.TranslateBtn);一样运行代码时,它的工作方式也是一样的。然而,我的代码相当简单,这就是为什么我很想知道括号中是否有另一个功能可以帮助处理更复杂的代码。
发布于 2019-12-16 19:23:35
对于android,findViewById返回一个View。基本上,所有UI组件都是View类型的。要获得Button的属性,我们必须将findViewById的结果转换为Button
Button TranslateBtn = (Button) findViewById(R.id.TranslateBtn);这是一个(显式的) View和id TranslateBtn转换为Button类型。
然而,这已经过时了,不再需要了。
Button TranslateBtn = findViewById(R.id.TranslateBtn);也是有效的。
有关更多的官方信息,请看一下文档,特别是:
在大多数情况下--取决于编译器的支持--结果视图将自动转换为目标类类型。如果目标类类型不受约束,则可能需要显式强制转换。
希望这能帮上忙
发布于 2019-12-16 19:23:46
几年前你不会写
Button TranslateBtn = findViewById(R.id.TranslateBtn);因为findViewById只返回View,所以必须手动转换。现在您可以避免无用的强制转换,因为findViewById返回一般的<T extends View>。
我想有些人仍然有旧习惯。
https://stackoverflow.com/questions/59362979
复制相似问题