我只想知道,是否有更好的方法来使用setOnClickListener来处理几个按钮并减少冗余代码。
这是我的代码:
private void addListenerOnColorButtons() {
        redButton = (Button) findViewById(R.id.buttonRed);
        redButton.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                if (!red) {
                    Toast.makeText(Register.this, "Red is selected!",
                            Toast.LENGTH_SHORT).show();
                    red = true;
                } else {
                    red = false;
                }
            }
        });
        blueButton = (Button) findViewById(R.id.buttonBlue);
        blueButton.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                if (!blue) {
                    Toast.makeText(Register.this, "Blue is selected!",
                            Toast.LENGTH_SHORT).show();
                    blue = true;
                } else {
                    blue = false;
                }
            }
        });
        greenButton = (Button) findViewById(R.id.buttonGreen);
        greenButton.setOnClickListener(new OnClickListener() {
            public void onClick(View arg0) {
                if (!green) {
                    Toast.makeText(Register.this, "Green is selected!",
                            Toast.LENGTH_SHORT).show();
                    green = true;
                } else {
                    green = false;
                }
            }
        });
    }任何帮助都将不胜感激。
发布于 2014-10-11 19:59:38
您所需要的就是实现您的活动
OnClickListener
并使用以下结构调整代码:
    private void attachListenersOnColorButtons() {
    redButton = (Button) findViewById(R.id.buttonRed);
    redButton.setTag("RedButton"); // this tag will be used as identifier in onClick method
    redButton.setOnClickListener(this);
    blueButton = (Button) findViewById(R.id.buttonBlue);
    blueButton.setTag("BlueButton");
    blueButton.setOnClickListener(this);
    greenButton = (Button) findViewById(R.id.buttonGreen);
    greenButton.setTag("GreenButton");
    greenButton.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
    if(v.getTag().equals("RedButton")){
        // actions when red button is pressed
    }else if(v.getTag().equals("BlueButton")){
        // corresponding actions for blue button
    }else if(v.getTag().equals("GreenButton"){
        // ...
    }
}发布于 2014-10-11 19:27:03
让类实现onClickListener,重写类中的OnClickListener()方法。
发布于 2014-10-11 19:40:40
你可以这样做:
public class MainActivity extends Activity implements OnClickListener
{
private Button redButton;
private Button greenButton;
private int clickedButtonTag;
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.avticity_compte);
    redButton = (Button) findViewById(R.id.redButton);
    greenButton = (Button) findViewById(R.id.greenButton);
    redButton.setOnClickListener(this);
    greenButton.setOnClickListener(this);
}
@Override
public void onClick(View view)
{
    switch (view.getId())
    {
        case R.id.redButton:
        case R.id.greenButton:
            clickedButtonTag = Integer.parseInt((String) view.getTag());
        break;
        default:
        break;
    }
}
}https://stackoverflow.com/questions/26318397
复制相似问题