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

final 질문 있습니다.

0 추천
for(int i=0; i<9; i++){
         int j;
         int r = 0; 
         r = (int)(Math.random()*9);
         
         if(yours[r].getVisibility() == 2){
       r = (int)(Math.random()*9);
       if(yours[r].getVisibility()==2){
        r = (int)(Math.random()*9);
       }
      }
         tile[r].setOnClickListener(new View.OnClickListener() {
       public void onClick(View v) {
        tile[i].setVisibility(View.GONE);
        yours[r].setVisibility(View.GONE);
       }
            });         
        }

안녕하세요, final 변수 등록 때문에 질문드려요.

 

지금 ImageVIew를 array로 만들어 놓고 이걸 클릭 시 랜덤하게 삭제하려고 하는데요,

변수를 final로 설정하라는 error가 뜨고,

막상 변수를 final로 저장하면 값이 변경되니까 error가 뜨네요.

이럴 땐 다른 데에 문제가 있는 건가요??

 

에러는 둘 다 cannot refer to a non-final variable (i랑 r) inside and inner class defined in a different method.입니다.

 

 

laon 1 (270 포인트) 님이 2014년 8월 26일 질문

1개의 답변

0 추천
final 로 만들라는 오류 메시지는 local 변수 이니 click event listener 에서 사용할 수 없으므로 발생 한 것이고

delete 할 때 오류난 것은 final 은 변수를 수정할 수 없으므로 오류가 난 것 입니다.

 

그래서 결론이 머냐!

멤버 변수로 만드세요
aucd29 (218,390 포인트) 님이 2014년 8월 27일 답변
...