首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >setOnClickListener方法中的重复代码- android - java

setOnClickListener方法中的重复代码- android - java
EN

Stack Overflow用户
提问于 2014-10-11 19:24:51
回答 6查看 175关注 0票数 0

我只想知道,是否有更好的方法来使用setOnClickListener来处理几个按钮并减少冗余代码。

这是我的代码:

代码语言:javascript
运行
复制
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;
                }
            }
        });
    }

任何帮助都将不胜感激。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-10-11 19:59:38

您所需要的就是实现您的活动

OnClickListener

并使用以下结构调整代码:

代码语言:javascript
运行
复制
    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"){
        // ...
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-10-11 19:27:03

让类实现onClickListener,重写类中的OnClickListener()方法。

票数 1
EN

Stack Overflow用户

发布于 2014-10-11 19:40:40

你可以这样做:

代码语言:javascript
运行
复制
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;
    }
}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26318397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档