我的活动中有大约9个按钮 截至目前,我初始化每一个 与
Button button1 = (Button) findViewById(R.id.one);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "One", Toast.LENGTH_SHORT).show();
}
});
Button button2 = (Button) findViewById(R.id.two);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "two", Toast.LENGTH_SHORT).show();
}
});
依此类推。 如何在数组中初始化它们并为每个按钮分配唯一的onclick元素?
。
答案 0 :(得分:1)
我会选择开关!
将所有onclick属性设置为:
android:onclick="onClick"
并在您的活动中实现,如下所示:
public void onClick(View v) {
switch(v.getId()) {
case R.id.button1:
// your code;
break;
case R.id.button2:
// your code;
break;
...
default:
//your code
}
答案 1 :(得分:0)
您可以使用类似button1.setOnClickListener(getClickListener('one'));
public View.onClickListener getClickListener(final String as){
return new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "One", Toast.LENGTH_SHORT).show();
}
};
}
并将所有按钮添加到数组中,然后在循环中设置on click侦听器
**编辑:**
Button[] btn = new Button[10];
HashMap<String,Button> buttons = new HashMap<String, Button>();
buttons.put("one", (Button) findViewById(R.id.button1));
buttons.put("two", (Button) findViewById(R.id.button2));
//put all your buttons like this
for(String btnKey: buttons.keySet()){
buttons.get(btnKey).setOnClickListener(getClickListener(btnKey));
}