Android开发新手,但并非全新的Java。现在我在onCreate()方法中的代码是非常基本的:
Button b1 = (Button) findViewById(R.id.button1);
Button b2 = (Button) findViewById(R.id.button2);
Button b3 = (Button) findViewById(R.id.button3);
Button b4 = (Button) findViewById(R.id.button4);
Button b5 = (Button) findViewById(R.id.button5);
Button b6 = (Button) findViewById(R.id.button6);
Button b7 = (Button) findViewById(R.id.button7);
Button b8 = (Button) findViewById(R.id.button8);
Button b9 = (Button) findViewById(R.id.button9);
Button b10 = (Button) findViewById(R.id.button10);
Button b11 = (Button) findViewById(R.id.button11);
Button b12 = (Button) findViewById(R.id.button12);
Button b13 = (Button) findViewById(R.id.button13);
Button b14 = (Button) findViewById(R.id.button14);
Button b15 = (Button) findViewById(R.id.button15);
Button sqrt = (Button) findViewById(R.id.button16);
Button b17 = (Button) findViewById(R.id.button17);
Button b18 = (Button) findViewById(R.id.button18);
Button b19 = (Button) findViewById(R.id.button19);
Button b20 = (Button) findViewById(R.id.button20);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
b3.setOnClickListener(this);
b4.setOnClickListener(this);
b5.setOnClickListener(this);
b6.setOnClickListener(this);
b7.setOnClickListener(this);
b8.setOnClickListener(this);
b9.setOnClickListener(this);
b10.setOnClickListener(this);
b11.setOnClickListener(this);
b12.setOnClickListener(this);
b13.setOnClickListener(this);
b14.setOnClickListener(this);
b15.setOnClickListener(this);
sqrt.setOnClickListener(this);
b17.setOnClickListener(this);
b18.setOnClickListener(this);
b19.setOnClickListener(this);
b20.setOnClickListener(this);
当然有一种比这更简单的方法。我尝试了一个简单的for循环,但按钮的id值不适合'i'的增量。我是否必须更改id值才能使此方法成为可能,或者是否有更简单的方法?
如果相关,我使用最新版本的Android SDK,Eclipse插件,目标版本号为2.3.3
答案 0 :(得分:13)
对你来说只是一个有趣的技巧,因为你所有的按钮都使用相同的监听器,你可以用更少的代码做这样的事情(虽然效率较低,但不太可能引人注意):
ViewGroup group = (ViewGroup)findViewById(R.id.myrootlayout);
View v;
for(int i = 0; i < group.getChildCount(); i++) {
v = group.getChildAt(i);
if(v instanceof Button) v.setOnClickListener(this)
}
答案 1 :(得分:8)
获取根布局
onCreate
然后将其传递给此方法,(使用递归进行深度搜索按钮)
ViewGroup rootLayout=(ViewGroup) findViewById(R.id.root_layout);
祝你好运
答案 2 :(得分:1)
创建一个按钮数组并循环执行:
int[] ids = { R.id.button1, R.id.button2 , ........... };
Button[] buttons = new Buttons[ids.length];
for (int i = 0; i < ids.length; ++i) {
buttons[i] = (Button)findViewByIf(ids[i]);
buttons[i].setOnClickListener(this);
}
答案 3 :(得分:0)
重复性稍差的东西可能是:
int[] ids = {R.id.button1, R.id.button2, ... };
for (int id:ids) {
Button b = (Button) findViewById(id);
b.setOnClickListener(this);
}