在浏览Android教程的同时,我遇到了一些我不理解的东西。这可能非常简单,但我只是想知道为什么会这样。
在教程中:http://developer.android.com/resources/tutorials/views/hello-autocomplete.html
本教程似乎使用:
构建一个新的AutoCompleteTextViewAutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
我假设他们使用构造函数:
AutoCompleteTextView(Context context, AttributeSet attrs)
我认为他们的AttributeSet是“findViewById(R.id.autocomplete_country)
”;而他们的上下文是(AutoCompleteTextView)
。这是对的吗?
另外......新关键字,逗号以及为什么有一对括号?
我一直以为它必须是:
AutoCompleteTextView textview = new AutoCompleteTextView(context here, attrs here);
我哪里错了?!
答案 0 :(得分:4)
findViewById
返回与传入的参数对应的View
,并且强制 View
成为您正在使用的任何类型的对象
Button myButton = (Button) findViewById(R.id.button);
^ casting ^ returns the View of your button.
答案 1 :(得分:1)
引用的代码不是构造一个对象而是“获取”它。你正在做的是调用一个函数,该函数返回对已构造对象的引用。在这种情况下,可能在XML布局膨胀时创建了对象(通常在Activity的onCreate(Bundle)方法中)。代码很好。
findViewById(R.id.something)
返回一个View对象。然后必须将其包装以便将其作为任何View子类的实例进行访问。