首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android:初始化小部件时,在等号之后编写(EditText)或(TextView)的目的是什么?

Android:初始化小部件时,在等号之后编写(EditText)或(TextView)的目的是什么?
EN

Stack Overflow用户
提问于 2019-12-16 19:16:36
回答 2查看 56关注 0票数 1

我最近刚开始学习如何开发一个应用程序,我对java也相当陌生,所以这个问题听起来有点傻。在初始化按钮或任何其他小部件时,我看到大多数教程都使用类似于这个Button TranslateBtn = (Button) findViewById(R.id.TranslateBtn);的代码行,但是当我试图像这个Button TranslateBtn = findViewById(R.id.TranslateBtn);一样运行代码时,它的工作方式也是一样的。然而,我的代码相当简单,这就是为什么我很想知道括号中是否有另一个功能可以帮助处理更复杂的代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-16 19:23:35

对于android,findViewById返回一个View。基本上,所有UI组件都是View类型的。要获得Button的属性,我们必须将findViewById的结果转换为Button

代码语言:javascript
复制
Button TranslateBtn = (Button) findViewById(R.id.TranslateBtn);

这是一个(显式的) View和id TranslateBtn转换为Button类型。

然而,这已经过时了,不再需要了。

代码语言:javascript
复制
 Button TranslateBtn = findViewById(R.id.TranslateBtn);

也是有效的。

有关更多的官方信息,请看一下文档,特别是:

在大多数情况下--取决于编译器的支持--结果视图将自动转换为目标类类型。如果目标类类型不受约束,则可能需要显式强制转换。

希望这能帮上忙

票数 2
EN

Stack Overflow用户

发布于 2019-12-16 19:23:46

几年前你不会写

代码语言:javascript
复制
Button TranslateBtn = findViewById(R.id.TranslateBtn);

因为findViewById只返回View,所以必须手动转换。现在您可以避免无用的强制转换,因为findViewById返回一般的<T extends View>

我想有些人仍然有旧习惯。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59362979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档