Button setOnClickListener
最近再寫一個Project遇到處理Button的問題,假如有多個Button該怎麼處理
public class MainActivity extends Activity {
Button btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initfunction();
setonbtnclick();
}
private void initfunction(){
btn0=(Button)findViewById(R.id.buttonno0);
btn1=(Button)findViewById(R.id.buttonno1);
btn2=(Button)findViewById(R.id.buttonno2);
btn3=(Button)findViewById(R.id.buttonno3);
btn4=(Button)findViewById(R.id.buttonno4);
btn5=(Button)findViewById(R.id.buttonno5);
btn6=(Button)findViewById(R.id.buttonno6);
btn7=(Button)findViewById(R.id.buttonno7);
btn8=(Button)findViewById(R.id.buttonno8);
btn9=(Button)findViewById(R.id.buttonno9);
}
public void setonbtnclick(){
btn0.setOnClickListener(new BtnOnClick());
btn1.setOnClickListener(new BtnOnClick());
btn2.setOnClickListener(new BtnOnClick());
btn3.setOnClickListener(new BtnOnClick());
btn4.setOnClickListener(new BtnOnClick());
btn5.setOnClickListener(new BtnOnClick());
btn6.setOnClickListener(new BtnOnClick());
btn7.setOnClickListener(new BtnOnClick());
btn8.setOnClickListener(new BtnOnClick());
btn9.setOnClickListener(new BtnOnClick());
}
private class BtnOnClick implements OnClickListener{
@Override
public void onClick(View v) {
//dosomething()
}
}
}
以下的code以動態新增Button實作三個Button
public class MainActivity extends Activity implements OnClickListener{
Button btn=null;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView) findViewById(R.id.textView1);
initOnClickListener();//初始化Button
}
void initOnClickListener(){
int ids[]={
R.id.button1,R.id.button2,R.id.button3
};
for(int i=0; i<ids.length;i++){
if((btn=(Button)findViewById(ids[i]))!= null)
btn.setOnClickListener(this);
}
}
public void onClick(View v) {
switch( v.getId() ) {
case R.id.button1:
tv.setText("btn1");
break;
case R.id.button2:
tv.setText("btn2");
break;
case R.id.button3:
tv.setText("btn3");
break;
}
}
結果: 點選哪個btn就顯是哪個btn

結論:利用動態新增按鈕方式,可以很方便初使化Button,也可以減少程式碼