2016-07-22 106 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... 
     } 
    }); 
}