Java 我能打电话给';取消();在setOnClickListener内部的上一个方法上?

Java 我能打电话给';取消();在setOnClickListener内部的上一个方法上?,java,android,Java,Android,我正在制作一个简单的测验应用程序,由10个问题组成,每个问题都有10秒的倒计时。当每个问题的答案正确乘以倒数计时方法的剩余时间时,计分有效,因此它将是:分数=答案*时间间隔;我成功地从倒计时中获取了timeLeft值。当我设定的时间结束时,它会自动意念到下一个问题。问题是,当我选择正确答案并点击“下一步”按钮时,它成功地获取了时间限制值并将其乘以1(每个正确答案将为1分),但倒计时计时器仍会一直持续到结束,因此当我通过点击“下一步”按钮转到另一个问题时,上一个问题的时间仍在运行,不幸的是,当时间

我正在制作一个简单的测验应用程序,由10个问题组成,每个问题都有10秒的倒计时。当每个问题的答案正确乘以倒数计时方法的剩余时间时,计分有效,因此它将是:分数=答案*时间间隔;我成功地从倒计时中获取了timeLeft值。当我设定的时间结束时,它会自动意念到下一个问题。问题是,当我选择正确答案并点击“下一步”按钮时,它成功地获取了时间限制值并将其乘以1(每个正确答案将为1分),但倒计时计时器仍会一直持续到结束,因此当我通过点击“下一步”按钮转到另一个问题时,上一个问题的时间仍在运行,不幸的是,当时间结束时,它移到了时间尚未结束的前一个问题。如何从setOnClickListener中的CountDownTimer方法调用cancel()

    public void setTimer() {                                                        

    //Initialize a new CountDownTimer instance                                  
   new CountDownTimer(millisInFuture,countDownInterval){                        

            public void onTick(long millisUntilFinished){                           
                //do something in every tick                                        
                //Display the remaining seconds to app interface                    
                //1 second = 1000 milliseconds                                      
                cDown.setText("" + millisUntilFinished / 1000);                     
                timeLeft = millisUntilFinished / 1000;                              

            }                                                                       
            public void onFinish(){                                                 
                //Do something when count down finished                             
                cDown.setText("NEXT!");                                             
                Intent intent = new Intent(TestActivity1.this,TestActivity2.class); 
                intent.putExtra("score", score);                                    
                startActivity(intent);                                              
                finish();                                                           
                timeLeft = 0;                                                       
            }                                                                       


        }.start();                                                                  

        bNext.setOnClickListener(new View.OnClickListener() {                       

            @Override                                                               
            public void onClick(View v) {                                           

                cancel();                                                           

                timeLeft = millisUntilFinished;                                     
                Intent intent = new Intent(TestActivity1.this,TestActivity2.class); 
                intent.putExtra("score", score);                                    
                startActivity(intent);                                              
                finish();                                                           
                overridePendingTransition(R.anim.fade_in, R.anim.fade_out);         

            }                                                                       

        });                                                                         

    } 

您需要为倒计时计时器存储一个变量,以便调用和取消它

final CountDownTimer timer = new CountDownTimer(millisInFuture,countDownInterval){......}
timer.start();

bNext.setOnClickListener(new View.OnClickListener() {                       

   @Override                                                               
   public void onClick(View v) {                                                   
     timer.cancel();
           .........
   }                                                                       

});                                                                         

而不是直接将其创建为新的倒计时, 首先定义一个全局变量,如
倒计时cd


然后你可以在任何地方使用cd的方法。

好的,先生。非常感谢。