2016-07-22 194 views
0

我有按钮的列表清单执行,我加载它们在列表如下:的按钮onClick事件处理函数不是由按钮

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

这是怎么发生的?是否有解决方法,以便我可以将按钮添加到列表中并从那里开始工作,而不是经历声明单独变量的步骤?

UPDATE:

请回复到实际问题,不要把它当作故障排除。如果根据你的意见和经验,这应该是工作,你可以添加评论或回复一个实际的工作示例。我并不试图调试我的代码,只是想获得更多的见解。

+0

尝试'View.OnClickListener currentPositionListener =新View.OnClickListener(){.....};'而是Button.OnclickListener' –

+0

的'你可以分享完整的源代码。也尝试在onClick方法中使用Toast或使用调试,以确保此方法未被调用(因为有时logcat不显示) –

+0

@AkshayBhat nope。我已经试过了。 – atas76

回答

0

尝试做这样的:

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