2013-04-04 1 views
1

일부 버튼을 동적으로 생성하고 버튼을 누르면 메소드를 실행할 수 있기를 원합니다.Android : setOnClickListener()에서 직접 메소드를 호출 할 수 있습니까?

다음과 같은 것이 가능합니까?

private void someMethod(int ID){ 
//on button pressed do something with the ID 
} 

private void otherMethod(){ 

    for(Program element : someList) 
    { 
    addButton.setOnClickListener(someMethod(element.getID)); 
    } 
} 

분명히 내 질문을 설명하기 위해 일부 코드를 모의 한 것입니다. 나는 당신이 새로운 클래스를 인스턴스화 할 수 있다는 것을 알기 때문에, 지금까지는 제 시도로 에러를 계속 얻었지만 당신은 메소드를 호출 할 수 있어야합니다.

웹에서 한 번 둘러 보았지만 대답을 찾을 수 없으므로 여기에서 질문하겠습니다.

답변

3

setOnClickListener은 버튼을 클릭했을 때 어떤 일이 발생할지 정의합니다. 동일한 버튼에 여러 번 설정하는 것은 의미가 없습니다. 마지막으로 설정 한 것이 활성화됩니다.

addButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
      someMethod(...); 
     } 
}); 

비슷한 기능을 가진 여러 개의 버튼을 설정하려는 경우, 당신은 버튼을 통해 루프를 필요

는 내에서 리스너를하는 방법 를 호출 익명 클래스의 재정의를 선언하려면 (목록에서 말하기), 각각 OnClickListener을 설정합니다. 버튼마다 다른 변수를 달성하기 위해, 당신이 사용할 수있는 Viewtag :

for (Button b : buttons) { 
    b.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      someMethod(v.getTag()); 
     } 
    }); 
} 
이제

당신은 단순히 Button 설정할 수 있습니다 '당신이 원하는 무엇이든 할 수있는 XML (또는 manually)에서의 tag 속성을하고 얻을 것이다 청취자에게 전달됩니다 (따라서 메소드).

+0

미안 미안하지만이 질문이 의심 스러운데 왜 내부에 루프가 있습니까? – cosmicsafari

+0

두 번째 예제는 무엇을 찾고 있는지, 감사합니다. – cosmicsafari

+0

나는 당신이 무슨 일을할지 확신하지 못했습니다. 여러 매개 변수로'someMethod '를 호출하는 여러 개의 버튼을 수행하려는 경우에 대한 답을 편집했습니다. –

관련 문제