我是Android开发的新手,但不是Java。
我不明白为什么我在Button中定义的方法必须将View
作为参数。
例如......
XML中的
<Button
android:id="@+id/button1"
//etc..
//etc..
android:onClick="displayText" />
可以看出,这是onClick方法。
当我编写Java代码时,方法displayText
将被定义为
public void displayText(View view){
TextView myTextView = (TextView)findViewById(R.id.textView1);
myTextView.setVisibility(View.VISIBLE);
}
当一切正常时,我最初隐藏的文字将通过简单的按钮显示。
当我从此方法中删除参数View view
时,当我尝试点击按钮时应用程序崩溃。
我不明白为什么。
我不一定要对参数中的view
做任何事情。
在非android开发中,我可以使用参数中的view
并对其进行操作..但我没有看到我正在做任何有关此参数的事情..所以为什么这个方法需要它?
答案 0 :(得分:2)
潜在地,可以使用相同的方法来处理多个视图的click事件。 View view
参数可以让您知道哪一个是事件的来源。即单击了哪个按钮。
它需要它的原因是因为它必须匹配接口。当尝试将XML中的函数名称与可用函数匹配时,找不到它。
答案 1 :(得分:1)
Button是View的子类。因此,当方法采用View时,这意味着它们可以获取Button作为输入,还可以获得View的其他子类。
视图在参数中给出,因此您可以修改单击的视图。
顺便说一句,我不知道你可以像这样实现点击监听器。我通常这样做:button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view){
// handle
}
});
答案 2 :(得分:0)
我搜索过Stackoverflow,但从未找到适合我所寻找的问题所以我提出了这个问题。
这里给出的两个答案对于我来说,包围参数但从不使用它们的方法有点太短了。
然后我查看了旁边的“相关”部分,发现了一个比我更好的问题,答案更长,更满意我的问题并更详细地回答。
感谢所有回复的人。如果其他人在同一个问题中发现自己,那么问题/答案就会帮助我理解它。
Why do android methods accept View objects, but the objects are unused?