我在包含9按钮的Android应用中定义了一个Activity.每个按钮都必须侦听同一个事件监听器.
查看生成的R类,定义了它们的ID:
public static final int btn1=0x7f040001;
...
public static final int btn1=0x7f040009;
Run Code Online (Sandbox Code Playgroud)
我的问题是:可以在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) {
...
}
});
}
Run Code Online (Sandbox Code Playgroud)
或者在某些情况下,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) {
...
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |