我有一个按钮列表,我将它们加载到列表中:
positionButtons.add((Button) findViewById(R.id.positionBtn0));
positionButtons.add((Button) findViewById(R.id.positionBtn1));
positionButtons.add((Button) findViewById(R.id.positionBtn2));
我正在添加这样的事件处理程序:
Button.OnClickListener currentPositionListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(this.getClass().getSimpleName(), "Current position selected");
setSelectedPositionButton((Button) view);
}
};
for (Button positionButton: positionButtons) {
positionButton.setOnClickListener(currentPositionListener);
}
事件处理程序永远不会被执行(尽管没有错误消息),我需要为每个按钮设置一个单独的变量来执行事件处理程序:
positionButton0.setOnClickListener(currentPositionListener);
为什么会这样?是否有一个解决方法,以便我可以添加按钮到列表并从那里工作,而不是通过声明单独的变量的步骤?
更新
请回复实际问题,不要将其视为问题排查。如果您的意见和经验应该有效,您可以添加评论或回复实际工作示例。我不是试图调试我的代码,而是试图获得更多的洞察力。
答案 0 :(得分:0)
尝试这样做:
for (Button positionButton: positionButtons) {
positionButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick() {
// write your code...
}
});
}