1

我在一些基本的 Android/Java 开发中遇到了一些语义问题。如果我有以下代码(有效)从 a 收集用户输入textfield

final EditText userInput=(EditText) findViewById(R.id.txtUserInput);

userInput 是对象还是变量?我的理解是它是一个从 * EditText *类实例化的对象。(EditText)左边有什么作用findViewById。当我看到打开的括号时,我想铸造。谁能提供一些简单的清晰度?

4

2 回答 2

1

您说 userinput 是一个 EditText 对象是正确的,更具体地说,它是一个对象,它是 View 的子类。您从 findViewbyId() 方法返回的所有内容都将是一个视图,然后您需要将其转换为正确的对象。(EditText) 正在将您从 xml 返回的视图转换为 EditText。这允许您从 EditText 访问特别适用于 EditText 类的方法。

因此,每当您使用 findViewById() 时,您还需要将获得的视图转换为它所代表的对象。

如果您需要进一步的帮助,请告诉我。

-德让

于 2013-11-07T14:42:21.560 回答
0

用户输入是一个对象。findViewById(xxx) 返回一个 View 对象,但在您的情况下,您知道它将返回一个 EditText。因此可以使用 (EditText) 进行投射。由于 EditText 扩展了 View,因此您可以将其从 View 转换为 EditText。将其转换为 EditText 后,您可以找到 EditText 公开的所有方法,而不仅仅是 View 中公开的方法。

于 2013-11-07T14:43:24.857 回答