在
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); } }
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的语句将不正确.
原文地址:https://www.jb51.cc/android/312006.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。