我在一些基本的Android / Java开发上遇到了一些语义问题。如果我有以下代码(可行)从textfield
收集用户输入:
final EditText userInput=(EditText) findViewById(R.id.txtUserInput);
userInput是对象还是变量?我理解它是一个实例化的对象,形成* EditText * 类。 (EditText)
在findViewById
左侧做了什么。当我看到开放的parens,我认为铸造。任何人都可以提供一些简单的清晰度吗?
答案 0 :(得分:1)
你说useridput是一个EditText对象是正确的,更具体地说,它是一个View的子类。从findViewbyId()方法返回的所有内容都将是一个View,然后您需要将其强制转换为正确的Object。 (EditText)将您从xml返回的View转换为EditText。这允许您从EditText访问特别是EditText类可用的方法。
因此,无论何时使用findViewById(),您还需要将View转换为它所代表的Object。
如果您需要进一步的帮助,请告诉我。
-Dejan
答案 1 :(得分:0)
userinput是一个对象。 findViewById(xxx)返回一个View对象,但在您的情况下,您知道它将返回一个EditText。因此可以使用(EditText)进行转换。并且您可以将它从View转换为EditText,因为EditText扩展了View。 将它强制转换为EditText后,您可以找到EditText公开的所有方法,而不只是查看View中公开的方法。