如何解决您可以对不同的按钮使用相同的OnClickListener吗?
| 在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);
}
OnClickListenerCode
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的语句都是错误的。
, 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);
}
@Override
public void onClick(View v)
{
int id = v.getId();
switch (id) {
case R.id.button1:
//your code
break;
case R.id.button2:
break;
case R.id.button3:
break;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。