2011-01-25 15 views
6

हे सब, मैं अपने काउंटरडाउन टाइमर को शून्य तक पहुंचने के बाद अपने मूल समय पर ऑटोरेसेट करने की कोशिश कर रहा हूं। अनंत लूप की तरह।उलटी गिनती समाप्त होने के बाद मैं अपने काउंटरडाउन टाइमर को रीसेट करने की अनुमति कैसे दे सकता हूं?

package com.android.countdown; 


import android.app.Activity; 
import android.os.Bundle; 
import android.os.CountDownTimer; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.view.View.OnClickListener; 

public class countdown extends Activity { 


    public String formatTime(long millis) { 
      String output = "00:00"; 
      long seconds = millis/1000; 
      long minutes = seconds/60; 

      seconds = seconds % 60; 
      minutes = minutes % 60; 

      String secondsD = String.valueOf(seconds); 
      String minutesD = String.valueOf(minutes); 

      if (seconds < 10) 
      secondsD = "0" + seconds; 
      if (minutes < 10) 
      minutesD = "0" + minutes; 

      output = minutesD + " : " + secondsD; 
      return output; 
     } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

//Declare Start/Stop button 
Button btnstart = (Button)findViewById(R.id.btnstart); 
Button btnstop = (Button)findViewById(R.id.btnstop); 

//Declare Text fields to show time left 
final TextView mCounter1TextField=(TextView)findViewById(R.id.counter1); 
final TextView mCounter2TextField = (TextView)findViewById(R.id.counter2); 
final TextView mCounter3TextField=(TextView)findViewById(R.id.counter3); 



//Counter 1 
final CountDownTimer Counter1 = new CountDownTimer(120000 , 1000) { 
public void onTick(long millisUntilFinished) { 
    mCounter1TextField.setText("Seconds left: " + formatTime(millisUntilFinished)); 
} 

public void onFinish() { 
    mCounter1TextField.setText("Finished!"); 
} 
}; 

//Counter 2 
final CountDownTimer Counter2 = new CountDownTimer(80000 , 1000) { 
public void onTick(long millisUntilFinished) { 
    mCounter2TextField.setText("Seconds left: " + formatTime(millisUntilFinished)); 
} 

public void onFinish() { 
    mCounter2TextField.setText("Finished!"); 
} 
}; 

//Counter 3 
final CountDownTimer Counter3 = new CountDownTimer(10000 , 1000) { 
    public void onTick(long millisUntilFinished) { 
     mCounter3TextField.setText("Seconds left: " + formatTime(millisUntilFinished)); 
    } 

    public void onFinish() { 
     mCounter3TextField.setText("Finished!"); 
    } 
    }; 


//Start Button 
btnstart.setOnClickListener(new OnClickListener() { 
public void onClick(View v) { 
    Counter1.start(); 
    Counter2.start(); 
    Counter3.start(); 
    } 
}); 

//Stop Button 
btnstop.setOnClickListener(new OnClickListener() { 
public void onClick(View v) { 
    Counter1.cancel(); 
    Counter2.cancel(); 
    Counter3.cancel(); 
    } 
}); 
} 
} 

मैं समझ नहीं सकता क्या onFinish अंदर डाल करने के लिए()

उत्तर

6

संबंधित onFinish()

में CounterX.start() रखो: यहाँ कोड मैं अब तक किया है (वहाँ कुल में 3 टाइमर कर रहे हैं)
//Counter 1 
final CountDownTimer Counter1 = new CountDownTimer(120000 , 1000) { 
public void onTick(long millisUntilFinished) { 
     mCounter1TextField.setText("Seconds left: " + formatTime(millisUntilFinished)); 
} 

public void onFinish() { 
    mCounter1TextField.setText("Finished!"); 
    Counter1.start(); 
} 
}; 
+0

// संपादित करें \\ मुझे यह काम मिल गया। यह पता चला कि 'अंतिम' इसे सब खराब कर रहा था। मुझे 'काउंटरडाउन टाइमर काउंटर' घोषित करने की आवश्यकता थी इसके बाद 'फाइनल' से छुटकारा पाने के लिए शीर्ष पर। – MJ93

+0

^यही कारण है कि काउंटर 1.स्टार्ट() पहले मेरे लिए काम नहीं कर रहा था। हालांकि आपके इनपुट के लिए धन्यवाद, मुझे इसके बिना समाधान नहीं मिला होगा – MJ93

+0

खुशी है कि यह मदद करता है :) मैंने फाइनल को भी अनदेखा कर दिया है, अंतिम चर केवल एक बार असाइन किया जा सकता है, इसलिए इसकी आवश्यकता नहीं है। – SteD

संबंधित मुद्दे