2014-06-22 6 views
-1

버튼을 두 번 누르려고합니다. 그렇게하기 위해 루프를 끼워 넣고 사용하지 못하게하려고하므로 플레이어는 더 이상 해당 버튼을 누를 수 없습니다. 왜 버튼을 한 번만 눌러야하는지 이해하지 못한다. 그러면 카드가 멈추고 루프가 작동하지 않는다. 변수의 값은 0부터 시작합니다. 나는 루프 또한 사용하려고하지만 결과는 동일루프가 작동하지 않습니다.

final Button choice1 = (Button) findViewById(R.id.C); 
      backgroundC.setOnClickListener(new View.OnClickListener(){ 
       public void onClick(View view){ 
        while (j < 2){ 
         int randomInt3 = random1.nextInt(Deck.length()); 
         int drawableIDC = Deck.getResourceId(randomInt3, -1); 
         backgroundC.setBackgroundResource(drawableIDC); 
         j ++; 
       } 
        choice1.setEnabled(false); 
       }   
       }); 
+0

여기서 'j'는 어떻게 선언됩니까? – alfasin

+0

'j'와 같은 내용을 인쇄하면 코드가 생각한대로 작동하지 않는 것을 볼 수 있습니다. – keyser

답변

0

때문에 이유입니다 : 당신이 클릭 할 때, 루프 (2 회)를 실행하고이 끝난 후,이 버튼을 disable 것입니다. 필요한 코드는 다음과 같습니다.

final Button choice1 = (Button) findViewById(R.id.C); 
backgroundC.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View view){ 
     if (j < 2){ 
      int randomInt3 = random1.nextInt(Deck.length()); 
      int drawableIDC = Deck.getResourceId(randomInt3, -1); 
      backgroundC.setBackgroundResource(drawableIDC); 
      j++; 
     } 
     else { 
      choice1.setEnabled(false); 
     } 
    }   
}); 
+0

'j'가 2보다 커지면 코드가 실행되지 않기 때문에 else 부분을 삭제할 수 있습니다. –

+0

@shayanpourvatan 언제 버튼을 비활성화 하시겠습니까? 'j == 2' 버튼이 비활성화 될 때를 확실히 할 필요가 있습니다. 'else'는이 코드를 작성하기위한 "깔끔한"장소 일뿐입니다. –

+0

OP에서 버튼을 사용 중지해야하는 이유는 무엇입니까? 'j == 2 '이면 명령문이 실행되지 않아서 버튼처럼 작동하지 않습니다. –