Java Android-功能中从未使用过按钮视图

Java Android-功能中从未使用过按钮视图,java,android,function,onclicklistener,Java,Android,Function,Onclicklistener,请注意onClickButton(按钮)功能。在这里,按钮视图从未在函数中使用过,那么为什么它被放在那里,这个“现象”在Java世界中被称为什么 package com.example.myapplication; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast;

请注意onClickButton(按钮)功能。在这里,按钮视图从未在函数中使用过,那么为什么它被放在那里,这个“现象”在Java世界中被称为什么

package com.example.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class Test extends Activity {
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.test_layout);
    super.onCreate(savedInstanceState);
    setUpUI();
}

//BUTTON
private void setUpUI(){
    Button b=(Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onClickButton((Button) view);
        }
    });

}

public void onClickButton(Button button){
    Toast.makeText(this,"Button clicked",Toast.LENGTH_SHORT).show();
}
}

老实说,我会称之为糟糕的编程。

老实说,我会称之为糟糕的编程。

不需要这个
onClickButton

private void setUpUI(){
    Button b=(Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onClickButton((Button) view);
        }
    });

}

public void onClickButton(Button button){
    Toast.makeText(this,"Button clicked",Toast.LENGTH_SHORT).show();
}
您已经在定义按钮
onClick()
,只需这样做:

private void setUpUI(){
    Button b=(Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           Toast.makeText(getBaseContext(),"Button clicked",Toast.LENGTH_SHORT).show();
        }
    });
}
编辑:您的问题:功能中从未使用过按钮视图

您在这里介绍的代码没有演示如何使用在
onClick(View View)
中传递的视图,但是如果您认为,您会看到一个视图被传递给函数,以便对该特定视图进行更改,例如,更改视图的背景色,隐藏视图-点击按钮可以完成更多与视图相关的事情


我想你已经明白了我要解释的内容。

没有必要在单击按钮时使用此
onClickButton

private void setUpUI(){
    Button b=(Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onClickButton((Button) view);
        }
    });

}

public void onClickButton(Button button){
    Toast.makeText(this,"Button clicked",Toast.LENGTH_SHORT).show();
}
您已经在定义按钮
onClick()
,只需这样做:

private void setUpUI(){
    Button b=(Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           Toast.makeText(getBaseContext(),"Button clicked",Toast.LENGTH_SHORT).show();
        }
    });
}
编辑:您的问题:功能中从未使用过按钮视图

您在这里介绍的代码没有演示如何使用在
onClick(View View)
中传递的视图,但是如果您认为,您会看到一个视图被传递给函数,以便对该特定视图进行更改,例如,更改视图的背景色,隐藏视图-点击按钮可以完成更多与视图相关的事情


我想您已经明白了我要解释的内容。

OnClickListener接口以一种将视图作为参数的方式定义onClick()方法。在你的例子中,程序员创建了另一个方法,甚至传递了参数,尽管后来没有使用它,让我假设他或者不知道自己在做什么,或者“点击按钮”的吐司只是一个例子

传递收到单击的视图背后的想法是,您可以创建一个OnClickListener并将其分配给多个视图(从而节省一些内存)。在onClick()方法中,您将需要找出哪些视图实际上已被单击,这就是将视图传递给该方法的原因

那么,标准实现是这样的:

public void onClick(View view) {
    switch (view.getId()) {
        case R.id.btn_a : /* handle click on button a */ break;
        case R.id.btn_b : /* handle click on button b */ break;
        /* and so on */
    }
}

OnClickListener接口定义onClick()方法的方式是将视图作为参数。在你的例子中,程序员创建了另一个方法,甚至传递了参数,尽管后来没有使用它,让我假设他或者不知道自己在做什么,或者“点击按钮”的吐司只是一个例子

传递收到单击的视图背后的想法是,您可以创建一个OnClickListener并将其分配给多个视图(从而节省一些内存)。在onClick()方法中,您将需要找出哪些视图实际上已被单击,这就是将视图传递给该方法的原因

那么,标准实现是这样的:

public void onClick(View view) {
    switch (view.getId()) {
        case R.id.btn_a : /* handle click on button a */ break;
        case R.id.btn_b : /* handle click on button b */ break;
        /* and so on */
    }
}

这会带来同样的问题:为什么参数视图被传递到方法中而没有在那里使用。我要补充的唯一一点是:有时候你需要使用视图参数,有时候你不需要。如果你需要它,它就在那里。在编写库并创建onClick的调用签名时,它们传递了该值,因为假设您有时会需要它。如果不需要,请不要将视图传递给onClickButton。这会引发相同的问题:为什么参数视图传递到方法中而没有在方法中使用。我唯一要添加的是:有时需要使用视图参数,有时则不需要。如果你需要它,它就在那里。在编写库并创建onClick的调用签名时,它们传递了该值,因为假设您有时会需要它。如果您不需要它,请不要将视图传递给onClickButton。这更像是一个注释而不是答案。我试图回答以下问题:“这个“现象”在Java世界中被称为什么?”。我会这样称呼它,所以这是我的答案:)这宁愿是一个评论而不是一个答案。我试图回答这个问题:“这个“现象”在Java世界中被称为什么?”。我会这么说,所以我的答案是:)