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

버튼이 여러개여서 배열로 처리하려는데

0 추천
int i;

Button[] btnChamp;
 int[] bt_id = {R.id.btnChamp0, R.id.btnChamp1};

 

protected void onCreate(Bundle savedInstanceState) {

안쪽에

btnChamp = new Button[bt_id.length];
  for(i=0; i<btnChamp.length; i++)
  {
   btnChamp[i] = (Button) findViewById(btnChamp[i]);
  }

 

이렇게 사용했는데

findViewById에 빨간 밑줄이 그어집니다.

어떻게 해야하나요???

버튼이 100개 정도 되서 한번에 처리하려고 하는데...
또라에몬 (900 포인트) 님이 2013년 9월 21일 질문

2개의 답변

0 추천
 
채택된 답변
findViewById 안에 들어갈 요소는 int가 아닌가요? 잘 기억은 안나는데 아마 R.id. 어쩌구 이렇게 해야하고 R.java에 저장되는 레이아웃들은 index랄까? 인트 값으로 저장되어 있으므로 그 int값을 가지고 layout에서 가져오는걸로 알고있어요, 저런식으로 배열을 for문돌려서 초기화 시킬때는 findViewById(처음button의 ID)를 한후 "처음button의 ID++" 을 해주면 될꺼에요, R.java는 int값이 순차적으로 정리된답니다.

//set Eraser button
  ImageButton btnEraserSize[] = null;

btnEraserSize = new ImageButton[ERASERSIZE];
  int startEraserbtn =R.id.btnEraserSize1;
  for (int i = 0; i < ERASERSIZE; i++) {
   btnEraserSize[i] = (ImageButton)view.findViewById(startEraserbtn);
   btnEraserSize[i].setTag(i);
   btnEraserSize[i].setOnClickListener(listerPackage.EraserClickListener);
   startEraserbtn++;
  }
KennyNam (480 포인트) 님이 2013년 9월 22일 답변
또라에몬님이 2013년 9월 22일 채택됨
0 추천
레이아웃 수정하는 XML 에서

버튼에다가 onclick기능을 덧붙여서 별도로 findViewById 할 필요 없게 사용하시는 방법이 가장 좋을 것 같은데요.

http://blog.naver.com/crescent702/30176047965

도움이 되었으면 좋겠네요!
아이라이 (170 포인트) 님이 2013년 9월 22일 답변
...