0

在我的应用程序中,我在同一个班级中有倒数计时器和对话框。当有人按下退出按钮对话框打开并在其中 2 个按钮是和否。我想要当有人按下退出按钮时计时器暂停,如果有人按下没有按钮,它会在剩余的几秒内恢复。我知道为此我必须完成这个计时器并用剩余的秒数创建新的计时器。但我无法获得剩余的秒数。如果有人知道如何做到这一点,请帮助我。

倒数计时器代码-

counterTimer = new CountDownTimer(15000, 1000) {
        public void onFinish() {                
                if(currentGame.getRound()==20)
                {
                nextBtn1.setEnabled(false);
                nextBtn2.setEnabled(false);
                nextBtn3.setEnabled(false);
                nextBtn4.setEnabled(false);
                nextBtn5.setEnabled(false);
                final Handler handle = new Handler();
                Toast.makeText(QuestionActivity.this, "Time's Up", Toast.LENGTH_SHORT).show();
                Runnable delay = new Runnable() {
                    public void run() {
                        System.exit(0);
                    }
                };
                handle.postDelayed(delay,3000);
                }

                else if(currentGame.getRound()==0)
                {
                currentGame.decrementScore();
                final Handler handle = new Handler();
                Runnable delay = new Runnable() {
                    public void run() {
                        processScreen();
                    }
                };
                handle.postDelayed(delay,3000);
                }

                else if(currentGame.getRound()<=19)
                {
                        nextBtn1.setEnabled(false);
                        nextBtn2.setEnabled(false);
                        nextBtn3.setEnabled(false);
                        nextBtn4.setEnabled(false);
                        nextBtn5.setEnabled(false);
                        currentGame.decrementScore();
                        final Handler handle = new Handler();
                        Toast.makeText(QuestionActivity.this, "Time's Up", Toast.LENGTH_SHORT).show();
                        Runnable delay = new Runnable() {
                            public void run() {
                                processScreen();
                            }
                        };
                        handle.postDelayed(delay,3000);
                 }
            }

            public void onTick(long millisUntilFinished) {
                TextView time = (TextView) findViewById(R.id.timers);
                time.setText( ""+millisUntilFinished/1000);
                                }
        };
        counterTimer.start();
    }

对话框代码-

if(arg0.getId()==R.id.quit)
        {       
            Button yes, no;
            final Dialog dialog = new Dialog(this, R.style.FullHeightDialog); 
            dialog.setContentView(R.layout.dialog1); 
            dialog.setCancelable(true);
            counterTimer.cancel(); 
            //to set the message
            TextView message =(TextView) dialog.findViewById(R.id.tvmessagedialogtext);
            message.setText("Are you sure you want to Exit?");
            yes = (Button) dialog.findViewById(R.id.bmessageDialogYes);
            yes.setOnClickListener(new OnClickListener() {
            public void onClick(View v) 
            {
             finish();
             startActivity(new Intent(QuestionActivity.this, SplashActivity.class));             
                    }
            });

             no = (Button) dialog.findViewById(R.id.bmessageDialogNo);
             no.setOnClickListener(new OnClickListener() {
             public void onClick(View v)  
             {
             dialog.dismiss();
             nextBtn1.setEnabled(true);
             nextBtn2.setEnabled(true);
             nextBtn3.setEnabled(true);
             nextBtn4.setEnabled(true);
             }
             });
             dialog.show();
    }
4

3 回答 3

2

对话框代码-

 private long remaingtime, starttime = 15000;
    MyCounter timer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.question);
    nextBtn1 = (Button) findViewById(R.id.answer1);
            nextBtn1.setEnabled(true);
            nextBtn1.setOnClickListener(this);
            nextBtn2 = (Button) findViewById(R.id.answer2);
            nextBtn2.setEnabled(true);
            nextBtn2.setOnClickListener(this);
            nextBtn3 = (Button) findViewById(R.id.answer3);
            nextBtn3.setEnabled(true);
            nextBtn3.setOnClickListener(this);
            nextBtn4 = (Button) findViewById(R.id.answer4);
            nextBtn4.setEnabled(true);
            nextBtn4.setOnClickListener(this);
            nextBtn5 = (Button) findViewById(R.id.quit);
            nextBtn5.setEnabled(true);
            nextBtn5.setOnClickListener(this);
    timer = new MyCounter(starttime, 1000);
    timer.start();
    }

    if(arg0.getId() == R.id.quit)
            {   
                timer.cancel();
                final Dialog dialog = new Dialog(this, R.style.FullHeightDialog); 
                dialog.setContentView(R.layout.dialog1);
                dialog.setCancelable(true);
                //to set the message
                TextView message =(TextView) dialog.findViewById(R.id.tvmessagedialogtext);
                message.setText("Are you sure you want to Exit?");
                yes = (Button) dialog.findViewById(R.id.bmessageDialogYes);
                yes.setOnClickListener(new OnClickListener() {
                public void onClick(View v) 
                {
                 startActivity(new Intent(QuestionActivity.this, SplashActivity.class));    
                 finish();
                }
                });

                no = (Button) dialog.findViewById(R.id.bmessageDialogNo);
                no.setOnClickListener(new OnClickListener() {
                public void onClick(View v)  
                {
                dialog.dismiss();
                timer = new MyCounter(remaingtime, 1000);
                timer.start();           
                nextBtn1.setEnabled(true);
                nextBtn2.setEnabled(true);
                nextBtn3.setEnabled(true);
                nextBtn4.setEnabled(true);
                }
                });
                dialog.show();
            }

倒数计时器代码-

public class MyCounter extends CountDownTimer
{
       public MyCounter(long millisInFuture, long countDownInterval)
            {
                super(millisInFuture, countDownInterval);
            }

            @Override
            public void onTick(long millisUntilFinished) 
            {
                remaingtime = millisUntilFinished;
                time = (TextView) findViewById(R.id.timers);
                time.setText(""+millisUntilFinished/1000);
            }

            @Override
            public void onFinish()
            {
                if(currentGame.getRound()==20)
                {
                nextBtn1.setEnabled(false);
                nextBtn2.setEnabled(false);
                nextBtn3.setEnabled(false);
                nextBtn4.setEnabled(false);
                nextBtn5.setEnabled(false);
                final Handler handle = new Handler();
                Toast.makeText(QuestionActivity.this, "Time's Up", Toast.LENGTH_SHORT).show();
                Runnable delay = new Runnable() {
                    public void run() {
                        System.exit(0);
                    }
                };
                handle.postDelayed(delay,3000);
                }

                else if(currentGame.getRound()==0)
                {
                currentGame.decrementScore();
                final Handler handle = new Handler();
                Runnable delay = new Runnable() {
                    public void run() {
                        processScreen();
                    }
                };
                handle.postDelayed(delay,3000);
                }

                else if(currentGame.getRound()<=19)
                {
                nextBtn1.setEnabled(false);
                nextBtn2.setEnabled(false);
                nextBtn3.setEnabled(false);
                nextBtn4.setEnabled(false);
                nextBtn5.setEnabled(false);
                currentGame.decrementScore();
                final Handler handle = new Handler();
                Toast.makeText(QuestionActivity.this, "Time's Up", Toast.LENGTH_SHORT).show();
                Runnable delay = new Runnable() {
                public void run() 
                {
                  processScreen();
                }
                };
            handle.postDelayed(delay,3000);
            }
         }
     }
于 2013-10-10T10:36:35.200 回答
0

尝试这样

private final long interval = 1000;
long millisLeft = 90000;

public class MalibuCountDownTimer extends CountDownTimer {

        public MalibuCountDownTimer(long startTime, long interval) {
            super(startTime, interval);
        }

        @Override
        public void onFinish() {
            Toast.makeText(context, "Time's up!", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onTick(long millisUntilFinished) {
            millisLeft = millisUntilFinished;
            System.out.println("The milies left is" + millisLeft);  
        }
    }

    @Override
    public void onResume() {
        super.onResume();

            countDownTimer = new MalibuCountDownTimer(millisLeft, interval);
            countDownTimer.start();
    }

    public void onPause() {
        super.onPause();
        countDownTimer.cancel();
    }
于 2013-10-09T12:49:26.457 回答
0

只需在每个滴答声上自己计算秒数,稍后再使用它们来创建一个新计时器。

于 2013-10-09T12:50:06.070 回答