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

버튼 반복 처리에 관한 질문

0 추천
버튼이 많아서 한꺼번에 처리하려는데 문제가 생겼습니다.

어차피 버튼들 모두 같은 액션을 해야 하기 때문에

for문으로 돌리려고 합니다.

 

버튼 아이디값은 배열로 다 넣는데 성공했습니다.

그런데 버튼 하나하나 액션이 모두 같게 나옵니다.

 

[배열선언부]

static String champName[] = {"세슘", "우라늄"};
 static String champMent[] = {"내 이름은 세슘이다.",  "우라늄 농축액을 먹어볼 생각이 없니?" };

 

for(i=0; i<max; i++)
  {
   btnChamp[i].setOnClickListener(new OnClickListener(){
    public void onClick(View v)
    {
     String str1 = terredit1.getText().toString();
     str1 = "[" + champName[i] + "] " + champMent[i];
     terredit1.setText(str1);
    }
   });
  }

 

그래서 버튼이 두 개 있을 때

btnChamp1을 누르면

[세슘] 내 이름은 세슘이다.

이런식으로 나오는 것입니다.

이때 for 문을 없애고 i=0 이런 식으로 값을 주면

잘 나옵니다.

그런데 for문으로 돌리기만 하면

다 같은 값이 찍혀서 나오는데

어떻게 하면 좋을까요?
또라에몬 (900 포인트) 님이 2013년 9월 22일 질문

1개의 답변

0 추천
 
채택된 답변
static String champName[] = {"세슘", "우라늄"};
static String champMent[] = {"내 이름은 세슘이다.",  "우라늄 농축액을 먹어볼 생각이 없니?" };

for(i=0; i<max; i++)
  {

  btnChamp[i].setTag("[" + champName[i] + "] " + champMent[i]);
   btnChamp[i].setOnClickListener(new OnClickListener(){
    public void onClick(View v)
    {

      String str1 = (String) v.getTag();
     terredit1.setText(str1);
    }
   });
  }

태그를 활용해 보세요.

달기살 (12,990 포인트) 님이 2013년 9월 23일 답변
또라에몬님이 2013년 9월 23일 채택됨
...