2010-10-16 9 views
5

शेष समय प्रदर्शित करता है, मैं http://helloandroidworld.com/2010/02/how-to-create-a-simple-android-countdown-timer/ से उलटी गिनती टाइमर बनाने की कोशिश कर रहा था, लेकिन मैं इसे प्रारूप में वर्णित प्रारूप के साथ काम नहीं कर सकता 00:00:00 जैसा कि लेख में वर्णित है। टाइमर शुरू हो जाएगा और मुझे इसे रोकने की अनुमति देगा और यह दो मिनट तक चलेगा लेकिन आप इसे नहीं देख सकते हैं। यदि आप इसे रोकते हैं तो आप देख सकते हैं कि कितना समय शेष है लेकिन आप इसे काम पर नहीं ला सकते हैं। प्रारूपण के बिना यह ठीक काम करता है और गिना जाता है। क्या किसी के पास यह काम कर रहा है या इसे ठीक करने का तरीका पता है? मैं चारों ओर खोज कर रहा हूं और स्वरूपण के साथ इस तरह की उलटी गिनती टाइमर को कवर नहीं कर सकता। किसी भी सहायता की सराहना की जाएगी।00:00:00 काम नहीं कर रहा है के साथ स्वरूपण उलटी गिनती टाइमर। 00:00:00 को तब तक प्रदर्शित करता है जब तक

TextView timeDisplay; 
    MyCount counter; 
    int state = 0; 
    int length = 120000; 
    long startTime = 0; 
    long currentTime = 0; 
    long timeElapsed = 0; 
    long timeRemaining = 0; 
    long prevTimeRemaining = 0; 
    Button control; 

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

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

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

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

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

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.countdown); 

    timeDisplay = (TextView) findViewById(R.id.timer); 
    control = (Button) findViewById(R.id.control); 
    counter = new MyCount (length, 1000); 
    } 

    public void control(View view) { 
    switch (state) { 
    case 0: 
     startTime = System.currentTimeMillis(); 
     counter.start(); 
     control.setText(R.string.pause); 
     state = 1; 
     break; 
    case 1: 
     // pause 
     currentTime = System.currentTimeMillis(); 
     timeElapsed = currentTime - startTime; 
     if (prevTimeRemaining == 0) 
     timeRemaining = length - timeElapsed; 
     else 
     timeRemaining = prevTimeRemaining - timeElapsed; 
     counter.cancel(); 
     timeDisplay.setText("" + formatTime(timeRemaining)); 
     control.setText(R.string.resume); 
     prevTimeRemaining = timeRemaining; 

     // resume 
     counter = new MyCount(timeRemaining, 1000); 
     state = 0; 
     break; 
    case 2: 
     prevTimeRemaining = 0; 
     counter = new MyCount(length, 1000); 
     control.setText(R.string.start); 
     timeDisplay.setText(R.string.timer); 
     state = 0; 
    } 
    } 

    public class MyCount extends CountDownTimer { 

    public MyCount(long millisInFuture, long countDownInterval) { 
     super(millisInFuture, countDownInterval); 
    } 

    public void onFinish() { 
     timeDisplay.setText("done!"); 
     state = 2; 
    control.setText(R.string.restart); 
    } 

    public void onTick (long millisUntilFinished) { 
     timeDisplay.setText ("Left: " + formatTime(timeRemaining)); 

    } 

    } 

} 
+2

मुझे यह काम मिल गया। मूल रूप से timeDisplay.setText ("बाएं:" + प्रारूप समय (समय सारिणी)); समय था डिस्प्ले.सेटटेक्स्ट ("बाएं:" + मिलिस यूटिल फिनिश/100); और मैंने मिलीस के सामने प्रारूप समय डालने का प्रयास किया था, बिना किसी सफलता के समाप्त हुआ लेकिन मैंने 100/के बिना कोशिश की और यह – Daniel

+7

काम करता है तो कृपया उत्तर दें और अपना उत्तर जांचें, ताकि यह प्रश्न अनुत्तरित सूची से हटा दिया गया हो। – rds

उत्तर

0

'+' ऑपरेटर को विभाजन से अधिक प्राथमिकता है। इस प्रकार आप 100 से स्ट्रिंग को विभाजित करने का प्रयास करते हैं। आप ऑर्डर देने के लिए ब्रांड्स का उपयोग कर सकते हैं।

http://bmanolov.free.fr/javaoperators.php

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