2013-11-27 106 views
0

我創建了一個可以正常工作的倒計時器,但每次活動都會重新開始。我正在嘗試保存倒計時值並將其用於第二個活動。以下是我的主要活動頁面上的倒計時代碼。Android倒數計時器,繼續定時器上的新活動

//Countdown Start 


    new CountDownTimer(10000, 1000) { 


     public void onTick(long millisUntilFinished) { 
     final int j = (int) millisUntilFinished/1000; 

     long timed; 
     timed = millisUntilFinished; 




      TextView textic = (TextView) findViewById(R.id.textView2); 
      textic.setText("" + (millisUntilFinished)); 



      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
       TextView textic = (TextView) findViewById(R.id.textView2); 
       textic.setText(Integer.toString((j)));; 


       } 
      }); 





      } 


      public void onFinish() {   
      } 
     }.start(); 

//Countdown Finish 

我試過存儲倒計時值,然後使用passextra在我的意圖傳遞「定時」,但沒有奏效。我搜索了四周,找不到任何可行的解決方案。任何幫助將不勝感激。

感謝

================

編輯

================

公共類MainActivity擴展啓動畫面{

private CountDownTimer timer3; 
public void onCreate(){ 

    timer3 = new CountDownTimer(10000,100){ 

     public void onTick(long millisUntilFinished) { 

      TextView displaytime = (TextView) findViewById(R.id.textView3); 
      displaytime.setText("" + (millisUntilFinished));} 

     public void onFinish() { 
     } 

     }.start(); 




     };; 

public void startTimer(){ 

} 

public void cancelTimer(){ 

} 

==============

EDIT 2

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


       } 


       public void onFinish() { 



        mCounter1TextField.setText("Finished!"); 
        // Counter1.start(); 
       } 
      }; 



       Counter1.start(); 


        public void starttimer() { 
     Counter1.start(); 


} 

然後在我的第二個活動我已經有了:

MainActivity Counter1 = (MainActivity) getApplicationContext(); 
    Counter1.starttimer(); 

    TextView mCounter1TextField=(TextView)findViewById(R.id.textView4); 
    mCounter1TextField.setText("Seconds left: " + (Counter1)); 

回答

0

我建議無論是在自己的類寫CountDownTimer,並將其擴展爲Service,然後啓動服務,當你想啓動計時器,或使其成爲單身人士,所有活動訪問相同的計時器。

+0

我試圖在它自己的類中創建它,但倒計時不起作用,它只顯示了一個固定值10.我仍在研究如何創建一個單例。我對android非常陌生。感謝您的建議。 – user3041828

1

擴展Application類,並在其中添加全局計時器。您的類將是這個樣子

public class MyApplication extends Application{ 
    private CountDownTimer timer; 
    public void onCreate(){ 
     super.onCreate(); 
     timer = new CountDownTimer(10000,100){ 
       ..... 
      }; 
    } 
    public void startTimer(){ 
     ... 
    } 

    public void cancelTimer(){ 
     ... 
    } 
} 

通過調用啓動此定時器getApplicationContext() from an activity

MyApplication application = (MyApplication) getApplicationContext(); 
application.startTimer(); 

此外,請確保你在你的Android清單重新命名您的應用程序。

<application ... android:name=".MyApplication" .../> 
+0

如何在其他活動中調用此計時器?謝謝。我已經發布了新的代碼。 – user3041828

+0

我試過顯示計時器,但每次我只是停止響應對我。我編輯了代碼。 – user3041828