마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

동적으로 생성한 버튼에 이벤트 생성

0 추천
동적으로 생성한 버튼에 클릭 이벤트를 추가하고 싶은데

해당 버튼의 id를 어떻게 알 수 있을까요?
 

public int numButton = 0;
private final int btn = 0x8000;

public void pushButton() { // 버튼생성

  LinearLayout ButtonLayout = (LinearLayout)findViewById(R.id.ButtonLayout);
  numButton++;

  Button addButton = new Button(this);
  addButton.setId(btn+numButton);
  addButton.setHeight(50);
  addButton.setBackgroundResource(R.drawable.btn);

 

이러한 소스에서 클릭 이벤트 생성하려니 id 때문에 고민입니다.ㅜ
뽀송방댕이 (520 포인트) 님이 2013년 9월 9일 질문

2개의 답변

0 추천
 
채택된 답변
onClickListener에서 받은 view 객체의 getId 호출하시면 위 코드에서 setId로 설정한 값을 가져올수 있을텐데요?

정확히 어떤게 필요한지 질문이 모호하네요.
whitesnow (8,920 포인트) 님이 2013년 9월 10일 답변
뽀송방댕이님이 2013년 9월 10일 채택됨
저 위의 함수를 만들어서 동적으로 버튼을 생성 했는데...
생성된 버튼을 클릭하면 다른 이벤트를 발생하게끔 하고싶어요.ㅎ
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.order);

        //----------------------주문 버튼-------------------------------------
        Button btnAdd = (Button)findViewById(R.id.button1);
        btnAdd.setOnClickListener(new Button.OnClickListener(){
            public void onClick(View v){
                pushButton();
            }
        });

        SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
        pref.getString("address", address);

        // TODO Auto-generated method stub
    }

이렇게 버튼을 만들었는데...버튼을 만들때
(Button)findViewById(R.id. ====) << 이 부분을 모르겠네요.ㅠ
코드 상에서 버튼을 만드셨으니 R에는 없는게 맞습니다.(코드에서 ID 설정하는 부분도 에러를 유발할 수 있으니 주의하시고요)

코드에서 버튼 만드시는 거면 굳이 저렇게 찾을 필요없이 만들면서 리스너 달아주셔도 될텐데요. 위에 pushButton 함수가 어느 클래스에 있는 함수인지는 모르겠지만 pushButton 함수 안에서 리스너 달면서 this 주면 될텐데요.
오오 pushButton 안에 리스너 달아주니깐 id 없이 클릭 이벤트 발생하네요 !! 감사합니다 !! ^^*
0 추천
addButton.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				
			}
		});

이런식으로 해당객체에 클릭리스너를 달면 id값없어도 클릭이벤트사용 가능합니다.

아르샤빈 (1,340 포인트) 님이 2013년 9월 10일 답변
어래..ㅜ 저 addButton 은 pushButton 함수안에 있는거라 따올수가 없다네요.ㅜ 될거 같다가도 안대넴..;;;
...