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

동적 버튼생성후 클릭 이벤트 처리시 질문

0 추천

버튼을 동적 생성하고 ID값을 줬는데 ID값을 못받아오는데 어디가 잘못된건가요??

setid로 설정하는거 아닌가요??

getId에서 on a null object reference 됩니다 ㅜ

Attempt to invoke virtual method 'int android.widget.Button.getId()' on a null object reference

<span style="font-size:12px">    btnArr[i] = new Button(this); //버튼 선언
    btnArr[i].setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 200));  //가로세로 폭
    btnArr[i].setBackgroundResource(R.drawable.white);  //이미지
 
    btnArr[i].setId(i);  //버튼 아이디값 차례로 입혀줌
 
    btnArr[i].setOnClickListener(this);
 
    list.addView(btnArr[i]);  </span></span>
public void onClick(View v){
    
      for(i = 0; i < btnArr.length; i++){
          if(v.getId() == btnArr[i].getId()){
        
          }
      }
 
  }

 

익명사용자 님이 2019년 4월 8일 질문

1개의 답변

0 추천
View v = list.getChildAt(i) ;

Button btn = (Button) v;

v.getId() 로 해보세요
aucd29 (218,390 포인트) 님이 2019년 4월 8일 답변
좀만 자세히 설명좀 부탁드릴게요 ㅠ
linear (list) 에 넣은 버튼들을 getChildAt 으로 위치를 지정해서 버튼을 얻는것 입니다.
https://developer.android.com/reference/android/view/ViewGroup.html#getChildAt(int)
감사합니다 ^^ 잘 해결 됐습니다 ~
...