按钮的onClick事件处理程序不是从按钮列表

时间:2016-07-22 09:49:06

标签: android

我有一个按钮列表,我将它们加载到列表中:

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);

为什么会这样?是否有一个解决方法,以便我可以添加按钮到列表并从那里工作,而不是通过声明单独的变量的步骤?

更新

请回复实际问题,不要将其视为问题排查。如果您的意见和经验应该有效,您可以添加评论或回复实际工作示例。我不是试图调试我的代码,而是试图获得更多的洞察力。

1 个答案:

答案 0 :(得分:0)

尝试这样做:

for (Button positionButton: positionButtons) {
    positionButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick() {
            // write your code...
        }
    });
}