Reputation: 42
I am coming to an issue where I want to get the onclick source image name to show into my database. However, in my getSourceImageAndStoreToDB
method I can only do one button as shown below. But, I want to achieve if the user selects another button in the carousel. That code below it only gets the first button source image only. Can anyone help me solve this? thanks for the help.
here is my code:
void start() {
Button btn = ImageButton1.GetComponent<Button>();
btn.onClick.AddListener(TaskOnClick);
Button btn1 = ImageButton2.GetComponent<Button>();
btn1.onClick.AddListener(TaskOnClick);
Button btn2 = ImageButton3.GetComponent<Button>();
btn2.onClick.AddListener(TaskOnClick);
Button btn3 = ImageButton4.GetComponent<Button>();
btn3.onClick.AddListener(TaskOnClick);
Button btn4 = ImageButton5.GetComponent<Button>();
btn4.onClick.AddListener(TaskOnClick);
Button btn5 = ImageButton6.GetComponent<Button>();
btn5.onClick.AddListener(TaskOnClick);
Button btn6 = ImageButton7.GetComponent<Button>();
btn6.onClick.AddListener(TaskOnClick);
Button btn7 = ImageButton8.GetComponent<Button>();
btn7.onClick.AddListener(TaskOnClick);
Button btn8 = ImageButton9.GetComponent<Button>();
btn8.onClick.AddListener(TaskOnClick);
Button btn9 = ImageButton10.GetComponent<Button>();
btn9.onClick.AddListener(TaskOnClick);
Button btn10 = ImageButton11.GetComponent<Button>();
btn10.onClick.AddListener(TaskOnClick);
Button btn11 = ImageButton12.GetComponent<Button>();
btn11.onClick.AddListener(TaskOnClick);
Button btn12 = ImageButton13.GetComponent<Button>();
btn12.onClick.AddListener(TaskOnClick);
Button btn13 = ImageButton14.GetComponent<Button>();
btn13.onClick.AddListener(TaskOnClick);
Button btn14 = ImageButton15.GetComponent<Button>();
btn14.onClick.AddListener(TaskOnClick);
Button btn15 = ImageButton16.GetComponent<Button>();
btn15.onClick.AddListener(TaskOnClick);
Button btn16 = ImageButton17.GetComponent<Button>();
btn16.onClick.AddListener(TaskOnClick);
Button btn17 = ImageButton18.GetComponent<Button>();
btn17.onClick.AddListener(TaskOnClick);
Button btn18 = ImageButton19.GetComponent<Button>();
btn18.onClick.AddListener(TaskOnClick);
Button btn19 = ImageButton20.GetComponent<Button>();
btn19.onClick.AddListener(TaskOnClick);
Button btn20 = ImageButton21.GetComponent<Button>();
btn20.onClick.AddListener(TaskOnClick);
Button btn21 = ImageButton22.GetComponent<Button>();
btn21.onClick.AddListener(TaskOnClick);
Button btn22 = ImageButton23.GetComponent<Button>();
btn22.onClick.AddListener(TaskOnClick);
Button btn23 = ImageButton24.GetComponent<Button>();
btn23.onClick.AddListener(TaskOnClick);
Button btn24 = ImageButton25.GetComponent<Button>();
btn24.onClick.AddListener(TaskOnClick);
Button btn25 = ImageButton26.GetComponent<Button>();
btn25.onClick.AddListener(TaskOnClick);
Button btn26 = ImageButton27.GetComponent<Button>();
btn26.onClick.AddListener(TaskOnClick);
Button btn27 = ImageButton28.GetComponent<Button>();
btn27.onClick.AddListener(TaskOnClick);
Button btn28 = ImageButton29.GetComponent<Button>();
btn28.onClick.AddListener(TaskOnClick);
}
void TaskOnClick()
{
Debug.Log ("You have clicked the button!");
}
}
Upvotes: 0
Views: 200
Reputation: 2244
Add parameter buttonName to the method TaskOnClick() and pass that parameter in the click handler:
void start() {
Button btn = ImageButton1.GetComponent<Button>();
btn.onClick.AddListener(() => TaskOnClick(btn.Name)); // or TaskOnClick(ImageButton1.Name)
}
void TaskOnClick(string buttonName)
{
Debug.Log ($"You have clicked the button {buttonName}");
}
Alternatively, instead of name, you can pass ImageButton or Button to the click handler:
void start() {
Button btn = ImageButton1.GetComponent<Button>();
btn.onClick.AddListener(() => TaskOnClick(btn));
}
void TaskOnClick(Button button)
{
Debug.Log ($"You have clicked the button {button.Name}");
}
Upvotes: 2