[英]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.