我在包含 9 个按钮的 Android 应用程序中定义了一个活动。每个按钮都必须侦听相同的事件侦听器。
查看生成的 R 类,它们的 Id 被定义:
public static final int btn1=0x7f040001;
...
public static final int btn1=0x7f040009;
我的问题是:可以在 for 循环中添加循环 ID 的侦听器吗?
for (int i= R.id.btn1; i<=R.id.btn9;i++)
{
Button button = (Button)findViewById(i);
button.setOnTouchListener(new View.OnTouchListener() {
@Override public boolean onTouch(View v, MotionEvent event) {
...
}
});
}
或者在某些情况下,编译器会重新分配 Id,从而破坏我的代码?
我正在使用Intellij Idea环境来构建应用程序。
我担心如果你的R文件是用非连续的ID重新生成的,这将是一个非常糟糕的主意。 你更好的选择是存储一个包含你的ID的int数组并循环访问它
前任。
int[] views = new int[] { R.id.btn1, R.id.btn2, R.id.btn3, ...... R.id.btn9 };
for (int i= 0; i< views.length ;i++)
{
Button button = (Button)findViewById(views[i]);
button.setOnTouchListener(new View.OnTouchListener() {
@Override public boolean onTouch(View v, MotionEvent event) {
...
}
});
}