how to start new countdowntimer in dialog box with remaining seconds?

后端 未结 3 2022
南笙
南笙 2020-12-22 11:07

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

相关标签:
3条回答
  • 2020-12-22 11:21

    try like that

    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();
        }
    
    0 讨论(0)
  • 2020-12-22 11:33

    Dialog Box Code-

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

    Count Down Timer Code-

    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);
                }
             }
         }
    
    0 讨论(0)
  • 2020-12-22 11:41

    Just count the seconds yourself on each tick and use them later to create a new timer.

    0 讨论(0)
提交回复
热议问题