gpt4 book ai didi

android - 您可以对不同的按钮使用相同的 OnClickListener 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:03:07 26 4
gpt4 key购买 nike

在 android 中,我可以为不同的按钮使用相同的 OnClickListener 吗?如果是,我如何获得点击产生的按钮?我目前有 4 个按钮,每个按钮都有自己的 OnClickListener。除了获取被单击按钮的文本外,每个 OnClickListener 都在做同样的事情。我想创建一个 OnClickListener 但我无法弄清楚如何确定正在单击哪个按钮。谢谢

protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

mTts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {

@Override
public void onInit(int arg0) {
// TODO Auto-generated method stub

}
});
setContentView(R.layout.home);
Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
Button button3 = (Button)findViewById(R.id.button3);
Button button4 = (Button)findViewById(R.id.button4);

//Load First Word
button1.setOnClickListener(button1ClickListener);
button2.setOnClickListener(button2ClickListener);
button3.setOnClickListener(button3ClickListener);
button4.setOnClickListener(button4ClickListener);

}

不同部分用粗体表示的监听器代码

private OnClickListener button1ClickListener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
**Button button = (Button)findViewById(R.id.button1);**
handleButtonClick(button);
}
};

private OnClickListener button2ClickListener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
**Button button = (Button)findViewById(R.id.button2);**
handleButtonClick(button);

}
};

private OnClickListener button3ClickListener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
**Button button = (Button)findViewById(R.id.button3);**
handleButtonClick(button);

}
};

private OnClickListener button4ClickListener = new View.OnClickListener() {
@Override
public void onClick(View arg0) {
**Button button = (Button)findViewById(R.id.button4);**
handleButtonClick(button);

}
};

handleButtonclick 代码

private void handleButtonClick(Button button) {
if(button.getText().equals(currentWord)){
currentScore += availableScore;
TextView score = (TextView)findViewById(R.id.textViewScore);
score.setText(String.valueOf(score));
currentIndex++;
availableScore = 4;
InitializeGame();
}
else{
availableScore--;
button.setEnabled(false);
}
}

根据 Karthik 的建议,我将代码修改为以下内容:

protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

mTts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {

@Override
public void onInit(int arg0) {
// TODO Auto-generated method stub

}
});
setContentView(R.layout.home);
Button button1 = (Button)findViewById(R.id.button1);
Button button2 = (Button)findViewById(R.id.button2);
Button button3 = (Button)findViewById(R.id.button3);
Button button4 = (Button)findViewById(R.id.button4);

//Load First Word
button1.setOnClickListener(buttonClickListener);
button2.setOnClickListener(buttonClickListener);
button3.setOnClickListener(buttonClickListener);
button4.setOnClickListener(buttonClickListener);

}

点击监听代码

private OnClickListener buttonClickListener = new View.OnClickListener() {

@Override
public void onClick(View arg0) {
handleButtonClick((Button)arg0);
}
};

最佳答案

是的,这是可能的。我在下面写了一个应该相对简单的示例。

像往常一样,为所有按钮添加 OnClickListener,如下所示:

btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);

然后如下图添加onClick()事件:

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v == btn1){
//Things to do
}
if(v == btn2){
//Things to do
}
if(v == btn3){
//Things to do
}
}

这应该可以正常工作。不要忘记为存在 onCreate 的类实现 View.OnClickListener,否则上面设置 OnClickListener 的所有语句都是不正确的。

关于android - 您可以对不同的按钮使用相同的 OnClickListener 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6133236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com