2017-02-16 1 views
1

나는 countDownTimer() 메서드가 있으며, 타이머가 10 또는 9 초 남았을 때 사용자가 버튼을 누르면 특정 토스트를 인쇄하려고합니다. gameButton() 메서드에서 타이머의 텍스트 뷰를 읽음으로써 시간을 읽으려고 시도하지만 패스 토스트가 아닌 실패한 토스트 만 인쇄합니다. 그런데 왜 내가 이것을 할 수 없습니까? 또한 어떻게 작동시킬 수 있습니까? 감사.사용자가 countDownTimer() 메서드를 실행하는 동안 버튼을 누를 때를 알려주는 방법은 무엇입니까?

import android.app.Activity; 
import android.os.CountDownTimer; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 


public class GameScreen extends Activity { 

    private TextView time; 
    private Button start; 
    private Button cancel; 
    private Button gameButton; 
    private CountDownTimer countDownTimer; 

    private View.OnClickListener btnClickListener = new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 

      switch(v.getId()){ 
       case R.id.start_ID : 
        start(); 
        break; 
       case R.id.cancel : 
        cancel(); 
        break; 
       case R.id.gameButton_ID : 
        gameButton(); 
        break; 
      } 

     } 


    }; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_game_screen); 

     start = (Button) findViewById(R.id.start_ID); 
     start.setOnClickListener(btnClickListener); 
     cancel = (Button) findViewById(R.id.cancel); 
     cancel.setOnClickListener(btnClickListener); 
     time = (TextView) findViewById(R.id.time); 
     gameButton = (Button) findViewById(R.id.gameButton_ID); 
     gameButton.setOnClickListener(btnClickListener); 

    } 

    public void start(){ 
     time.setText("15"); 
     countDownTimer = new CountDownTimer(15 * 1000, 1000) { 
      @Override 
      public void onTick(long millsUntilFinished){ 
       time.setText("" + millsUntilFinished/1000); 

       /* gameButton.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
         // Perform action on click 
         //if(time.getText() == "10" || time.getText() == "9"){ 
          Toast.makeText(new GameScreen(), "This is my Toast message!", Toast.LENGTH_LONG).show(); 
         //} 
        } 
       }); */ 
      } 

      public void onFinish(){ 
       time.setText("Done !"); 
      } 
     }; 
     countDownTimer.start(); 
    } 

    private void cancel(){ 
     if(countDownTimer != null){ 
      countDownTimer.cancel(); 
      countDownTimer = null; 
     } 
    } 

    private void gameButton(){ 
     if(time.getText() == "10" || time.getText() == "9"){ 
      Toast.makeText(getApplicationContext(), "PASS", Toast.LENGTH_SHORT).show(); 
     } 
     else{ 
      Toast.makeText(getApplicationContext(), "FAIL", Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 

답변

관련 문제