如何在剩余秒数的对话框中启动新的倒计时? [英] how to start new countdowntimer in dialog box with remaining seconds?

查看:23
本文介绍了如何在剩余秒数的对话框中启动新的倒计时?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In my app i have Countdown Timer and dialog box in same class. when someone press quit button dialog box opens and in it 2 buttons yes and no. I want when someone press quit button timer pause and if someone press no button its resume with remaining seconds. I know for this i have to finish this timer and create new timer with remaining seconds. But i am unable to get remaining seconds. If someone know how to do this please help me.

倒计时代码-

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();
    }

推荐答案

对话框代码-

 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);
            }
         }
     }

这篇关于如何在剩余秒数的对话框中启动新的倒计时?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆