0

我是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 开发中,我可以使用参数中的viewthat 并用它做事.. 但我没有看到我正在用这个参数做任何事情.. 那么为什么在这个方法中需要它呢?

4

3 回答 3

2

潜在地,可以使用相同的方法来处理多个视图的点击事件。该View view参数会让您知道哪一个是事件的来源。即点击了哪个按钮。

之所以需要它,是因为它必须与接口匹配。尝试将 XML 中的函数名称与可用函数匹配时,找不到它。

于 2013-11-12T23:51:28.893 回答
1

Button 是 View 的子类。因此,当方法采用 View 时,意味着它们可以获取 Button 作为输入,也可以获取 View 的其他子类。

参数中给出了视图,因此您可以修改单击的视图。

顺便说一句,我不知道你可以实现这样的点击监听器。我通常这样做:

button.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View view){
        // handle
    }
});
于 2013-11-12T23:32:57.080 回答
0

我搜索了 Stackoverflow,但从未找到适合我正在寻找的问题,所以我提出了这个问题。

这里给出的两个答案对于我来说有点太短了,无法围绕一个有参数但从不使用它们的方法。

然后我查看了旁边的“相关”部分,发现一个问题比我的措辞更好,答案更长,满足了我的问题,并更详细地回答了它。

感谢所有在这里回复的人。如果其他人发现他们自己遇到同样的问题,这里是帮助我理解它的问题/答案。

为什么android方法接受View对象,但是对象没有被使用?

于 2013-11-13T12:32:17.557 回答