[Java] CountDownTimer एंड्रॉइड को बढ़ाना


Answers

अपनी गतिविधि xml फ़ाइल में नाम 'टाइमर टेक्स्ट' के साथ TextView जोड़ें

कक्षा में निम्नलिखित दो वैश्विक चर जोड़ें

int repeatCounter=1;//incrementing for every 60 sec
CountDownTimer tripTimeCounter;

कक्षा में निम्नलिखित विधि जोड़ें और उसे क्रियाकलाप पर गतिविधि से या किसी अन्य जगह से कहें, जहां आप चाहते हैं

public void startTimeCounter(){
    tripTimeCounter=new CountDownTimer(60*1000, 1000){

        @Override
        public void onFinish() {
            // TODO Auto-generated method stub
            repeatCounter=repeatCounter+1;
            startTimeCounter();//follow the recursion on finish of the limit of 60 seconds & increment the repeat counter
        }

        @Override
        public void onTick(long millisUntilFinished) {
            // TODO Auto-generated method stub

            timerText.setText(formatMillis((repeatCounter*60)*1000-millisUntilFinished));
        }

    }.start();
}

समय प्रारूप में मान दिखाने के लिए निम्नलिखित विधि का उपयोग करें

 static public String formatMillis(long val) {
    StringBuilder                       buf=new StringBuilder(20);
    String                              sgn="";

    if(val<0) { sgn="-"; val=Math.abs(val); }

    append(buf,sgn,0,( val/3600000));
    append(buf,":",2,((val%3600000)/60000));
    append(buf,":",2,((val %60000)/1000));
    //append(buf,".",3,( val%1000));
    return buf.toString();
 }
Question

काउंटडाउन टाइमर के बारे में एक सवाल है। मुझे एक ऐसा एप्लिकेशन बनाना पड़ता है जो उपयोगकर्ता को बटन के प्रत्येक क्लिक के लिए +1 से बढ़ा देता है। फिर बटन बंद होने के बाद उसे तीन सेकंड के लिए प्रतीक्षा करता है, फिर उलटी गिनती शुरू होती है।

मैंने नीचे अपना कोड चिपकाया

मेरा मुद्दा यह है: मैं संख्या में वृद्धि को सही ढंग से काम करने के लिए प्रतीत नहीं कर सकता, हालांकि ऐसा लगता है कि मैं संख्या को बढ़ाना बंद करने के बाद (onStop ()) इसे सीधे (onFinish ()) जाता है OnTick () पर जाने के लिए और 1 प्रत्येक सेकंड द्वारा संख्या कम करने के बजाय मैंने इसे ठीक करने के कई तरीकों की कोशिश की है, लेकिन अटक गया है।

क्या कोई मुझे सही दिशा में ले जा सकता है कि क्या करना है? किसी भी सहायता की सराहना की जाएगी। आप लोगों को धन्यवाद!

public class MainActivity extends Activity {

    Button incrementTime, startTime;
    public TextView timedisplay;
    public myTimer wavetimer;
    private long millisInFuture;
    private long millisUntilFinished;
    private long countDownInterval;
    private long onclicktime;
    //private WaveInterface model;
    public int countdown;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     
    incrementTime = (Button) findViewById(R.id.button2);
    startTime = (Button) findViewById(R.id.button3);
    incrementTime.setText("Increment Time");
    startTime.setText("Start");
    timedisplay = (TextView) findViewById(R.id.mycounter);
    timedisplay.setText("Time Left: " + millisUntilFinished);
    wavetimer = new myTimer (millisInFuture, 1000);


    incrementTime.setOnClickListener(new OnClickListener(){
    int countdown = 01;
   /**
    * On click button Listner
 * @return 
    */
    public void onClick(View v) {
        millisInFuture++;
        return; 
    }

   });
    startTime.setOnClickListener(new OnClickListener(){
    public void onClick(View v) {
        wavetimer.start();
    }
});}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}


public class myTimer extends CountDownTimer  {
public long millisInFuture;
private long countDownInterval;


public myTimer(long millisInFuture, long countDownInterval) {
    super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
    millisUntilFinished--;
    if (millisUntilFinished == 0){
        wavetimer.onFinish();
    }
    else {
    timedisplay.setText("Time Left: " + millisUntilFinished / 1000);
    }

}
@Override
public void onFinish() {
    timedisplay.setText("Countdown Finished");
    wavetimer.cancel();
}


public void onStop() {
    millisInFuture = millisInFuture + 1;
    timedisplay.setText("Time Left: " + millisInFuture);
}

मुझे यह पता नहीं लग सकता कि संख्या को कैसे सही ढंग से बढ़ाना है I मैंने कई तरह की कोशिश की है और यह पंगा लेना जारी रखता है यकीन नहीं है कि कहाँ देखना है किसी भी सहायता की सराहना की जाएगी। आप लोगों को धन्यवाद!




Links