繁体   English   中英

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

[英]Android - the button view has never been used in the function

请注意onClickButton(Button button)函数。 这里的按钮视图从未在函数中使用过,那么为什么将其放置在函数视图中,以及这种“现象”在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)中View Passed的用法,但如果您认为,您会看到一个视图已传递给函数,以便对该特定视图进行更改,例如,更改视图的backgroundColor,隐藏视图-单击此按钮可以在此处完成与视图相关的更多操作。

我想您正在得到我要解释的东西。

老实说,我将其称为不好的编程。

OnClickListener接口以将View作为参数的方式定义onClick()方法。 尽管您以后使用的程序员在您的情况下会创建另一个方法,甚至传递参数,但让我假设他不知道自己在做什么,或者只是举了“单击按钮”吐司。

传递接受点击的View的想法是,您可以创建一个OnClickListener并将其分配给多个View(从而节省一些内存)。 在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 */
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM