2012-07-31 2 views
0

다음과 같은 상황이 있습니다. 동적으로 무작위로 사용자 정의 이미지 버튼을 생성하고이를 TableRows의 TableView에 내 xml로 추가하는 활동이 있습니다. 이 액티비티에는 버튼 하나를 클릭했을 때 호출 할 메소드가 있습니다. 버튼에는 내부에 변수가 있습니다. 메서드는 이러한 변수를 가져 와서 같은 활동에서 TextView로 설정하므로 모든 단추가이 방법을 사용할 수 있습니다. 이 버튼들이 XML에서 정의 되었다면 나는 단지 android : onClick = "displayCell"을 사용하여 메소드를 지정하지만 그렇지 않은 것입니다. 이 버튼을 onClick으로 설정하는 방법이 있나요? 해당 버튼을 사용하거나 사용해야합니까?동적으로 버튼을 android에 추가하는 방법 onClick to xml

button.setOnClickListener (new OnClickListener() {...});

여기 주위의 답변에서 내가 보았 듯이 번거 로움을 겪고 있습니까? 내가 가진 문제는 메서드 (버튼)의 인수가 최종이 아니기 때문에 onClick 내부에서 내 메서드를 호출 할 수 없다는 것입니다. 루프에 '단추'묶음을 만들고 있으므로 '이 t)는이 될 수 있다고 생각 :

button.setOnClickListener를 (새 OnClickListener를() { 공공 무효 온 클릭 (보기 Q) { button.getActivity() displayCell (버튼) 내가 좋아하는 뭔가를하고 싶어 //. 이 있지만 분명히 작동하지 않습니다 } });

당신은 활동 후 OnClickListener를 구현하고있을 수

답변

1

(당신이 활동에 가정) :

button.setOnClickListener(this); 
0

이에 대한 해결책이 될 수있다 :

  • 버튼의 다른 인스턴스를 생성 (그래서.
  • setId() 메서드를 사용하여 정수 ID를 부여 할 수 있습니다. 나중에 참조 할 수 있도록 List에 ID를 저장할 수 있습니다. 나중에 참조 할 수 있습니다.
  • 만들면 onClickListeners를 바로 정의하십시오.
1

예 (comodoro 상태) 또는 onClickLIstener를 클래스의 멤버 변수로 만들려면 각 버튼에 "new"를 사용하지 마십시오. 당신의 버튼을 만들 때

private OnClickListener mOnClickListener = new OnClickListener() {...}; 

가와 :

button.setOnClickListener(mOnClickListener); 

리스너의 온 클릭() 함수는 버튼 자체의보기 전달됩니다. 이 함수에서 버튼 변수 등에 액세스 할 수 있습니다.

public void onClick(View v) 
{ 
ImageButton button = (ImageButton)v; 
// and access your button data via button object... 
} 
0

버튼을 상속 한 클래스를 사용하여 OnClickListener를 추가하십시오. 좋아요 :

class MyButton extends Button { 

     OnClickListener clicker = new OnClickListener() { 
     public void onClick(View v) { 

       displayCell(v); 

     } 
     }; 

} 
관련 문제