0

我在一个包含 9 个按钮的 Android 应用程序中定义了一个 Activity。每个按钮都必须监听同一个事件监听器。

查看生成的 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 环境来构建应用程序。

4

1 回答 1

8

我担心如果您的 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) {
             ...
        }
   });
}
于 2012-05-29T18:17:08.460 回答