2017-05-18 1 views
1

버튼을 클릭하면 텍스트가 표시됩니다. 이것은 작동 중입니다. 버튼 클릭 한도를 초과 할 때마다 사용자 정의 텍스트가 표시되어야합니다. 버튼을 세 번 클릭하면 사용자가 정의한 것이 아닌 일부 텍스트가 표시됩니다.조건 켜기 버튼 클릭

final Button btnca =(Button) findViewById(R.id.btnca); 
btnca.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     int c=1; 
     if(c <= 3) //if button click for first three times 
     { 
      new FancyShowCaseView.Builder(Playing.this) 
        .title(questionPlay.get(index).getCorrectAnswer()) 
        .build() 
        .show(); 
      score -= 10; 
      txtScore.setText(String.format("%d", score)); 
      c++; 
     } 
     if(c>3) //if button click for after three times 
     { 
      new FancyShowCaseView.Builder(Playing.this) 
        .title("Your Limit Exceed") 
        .build() 
        .show(); 
     }} 
}); 
+0

'setOnClickListener' 메소드 밖에서 'int c = 1'을 선언하십시오. –

답변

2

문제는이 모든 클릭에 대해 1부터 시작되도록 conClick 방법 로컬 것입니다 : 여기에 OnClickListener를 내 코드입니다. 수업 수준으로 이동해보십시오.

final Button btnca =(Button) findViewById(R.id.btnca); 
    btnca.setOnClickListener(new View.OnClickListener() { 

     int c=1; //initialize here so it's re-used in each onClick 

     @Override 
     public void onClick(View v) { 
      if(c <= 3) //if button click for first three times 
      { 
       new FancyShowCaseView.Builder(Playing.this) 
         .title(questionPlay.get(index).getCorrectAnswer()) 
         .build() 
         .show(); 
       score -= 10; 
       txtScore.setText(String.format("%d", score)); 
       c++; 
      } 
      if(c>3) //if button click for after three times 
      { 
       new FancyShowCaseView.Builder(Playing.this) 
         .title("Your Limit Exceed") 
         .build() 
         .show(); 
      }} 
    }); 

편집 :이 방법은 완전한 해결책이 아닙니다. 이 코드는 Activity(or Fragment).onCreate()이라고 가정합니다. 카운터는 수명주기 구성 요소가 다시 작성 될 때 구성 변경시 다시 설정되지만 해당 솔루션은 독자를위한 연습으로 남겨 둡니다.

+0

어리석은 실수 였어. 고마워요. –

+0

'c '를'c = 0'으로 초기화해야한다고 생각합니다. 그렇지 않으면'3rd' 클릭 후 토스트를 얻을 수 있습니다. – FAT

1

메서드 외부의 카운터 변수 c을 초기화해야합니다. 물론 c = 1 대신 c = 0으로 초기화해야 4th 클릭 후 축배를 얻을 수 있습니다.

이 시도 :

final Button btnca =(Button) findViewById(R.id.btnca); 
    btnca.setOnClickListener(new View.OnClickListener() { 

     int c = 0; 

     @Override 
     public void onClick(View v) { 

      if(c <= 3) //if button click for first three times 
      { 
       new FancyShowCaseView.Builder(Playing.this) 
         .title(questionPlay.get(index).getCorrectAnswer()) 
         .build() 
         .show(); 
       score -= 10; 
       txtScore.setText(String.format("%d", score)); 
       c++; 
      } 
      if(c>3) //if button click for after three times 
      { 
       new FancyShowCaseView.Builder(Playing.this) 
         .title("Your Limit Exceed") 
         .build() 
         .show(); 

       // Reset if required 
       //c = 0; 

      }} 
    }); 

를 참고로, 당신은 c 변수를 재설정하려는 경우, 다음 조건 if(c>3) 내부를 (c = 0)를 다시 설정합니다.

호프가 도움이 되길 바랍니다 ~