如题,我用表格布局做了很多个button,我想要的结果是:随便点击一个button,返回button上的文本。但是如果我每个button都有id、都要find、都要监听,岂不是很麻烦?求大神给个更简洁的方案,谢谢。
如果所有按钮操作都一样的话,那也简单
//你的activity
public class MainActivity extends Activity implements View.OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_1:
case R.id.btn_2:
case R.id.btn_3:
case R.id.btn_4:
case R.id.btn_5:
case R.id.btn_6:
case R.id.btn_7:
// 好了,全部获取到了
String text =( (Button)v).getText().toString();
break;
}
}
Button 的监听实现,多个按键可以是一个监听函数,然后根据 按键ID 来实现是哪个按键。
start = (Button) findViewById(R.id.button1);
stop = (Button) findViewById(R.id.button2);
start.setOnClickListener(mylistener );
stop.setOnClickListener(mylistener );
View.OnClickListener mylistener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
Log.d(TAG, "Start to recorder video\n");
start_recorde();
break;
case R.id.button2:
Log.d(TAG, "Stop to recorder video\n");
stop_recorde();
break;
default:
break;
}
}
};
button的ID是都要设置的,但是你可以像做计算机一样利用数组,然后就可以一个声明一个数组button,里面包含多个id,等我去找找我曾经的源码给你看看啊。
btn[0] = (Button) findViewById(R.id.zero);
btn[1] = (Button) findViewById(R.id.one);
btn[2] = (Button) findViewById(R.id.two);
btn[3] = (Button) findViewById(R.id.three);
btn[4] = (Button) findViewById(R.id.four);
btn[5] = (Button) findViewById(R.id.five);
btn[6] = (Button) findViewById(R.id.six);
btn[7] = (Button) findViewById(R.id.seven);
btn[8] = (Button) findViewById(R.id.eight);
btn[9] = (Button) findViewById(R.id.nine);
-------------
获取按键再xml文件上的ID;
也可以写成for循环简化下代码;
给你个我觉得挺简洁的方法,不需要findviewbyId,不需要在activity里面保存按钮对象,十分好用(反正我一直在用)。
在layout的button里面添加一个onClick参数,在activity里面直接实现OnClickListener接口,比如说:
////layout
<Button
android:id="@+id/btn_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="我是例子按钮"/>
////activity
//你的activity
public class MainActivity extends Activity implements View.OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_test: { //按钮的点击
//do Actions
//你需要返回文本是吧
String text =( (Button)v).getText().toString();
//get到文本了
break;
}
}
}
屡试不爽,反正我觉得方便多了。。当然如果在layout里面加了onClick参数的话,那么activity里面必须要实现onClickListener接口,不然会报错的。
希望你会喜欢
如果有更好的方法,也求推荐,,(*^__^*)
每个BUTTON都有一个ID是必须的,但是多个按键可以用一个监听器。
你可以使用一个时间监听器,然后只要是按钮选中的就getText(),没ID你没法绑定监听啊。