2012-01-30 85 views
1

我試圖開始一個新的活動「SMS.java」,如果我不響應我的計時器30secs內。 30秒後,新的動作應該開始。誰能幫我嗎???第5行類Timer延伸CountDownTimer .. 下面的代碼:如何在完成計時器後開始活動?

//TimerAct.java 
public class TimerAct extends Activity 
{ 
    static TextView timeDisplay; 
    Timer t; 
    int length = 30000; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.time); 

     timeDisplay = (TextView) findViewById(R.id.timer); 
     timeDisplay.setText("Time left: " + length/1000); 
     t = new Timer(length, 1000); 
     t.start(); 
     View b1 = findViewById(R.id.abort); 
     b1.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       t.cancel(); 
       finish(); 
      } 
     }); 
    } 
} 

//Timer.java 
public class Timer extends CountDownTimer 
{ 
    public Timer(long millisInFuture, long countDownInterval) 
    { 
     super(millisInFuture, countDownInterval); 
    } 

    public void onTick(long millisUntilFinished) 
    { 
     TimerAct.timeDisplay.setText("Time left: " + millisUntilFinished/1000); 
    } 

    public void onFinish() 
    { 
     TimerAct.timeDisplay.setText("Time over!!!"); 
    } 
} 
+0

你真的需要張貼您的「定時器」類代碼。 – L7ColWinters 2012-01-30 13:41:22

+0

@ L7ColWinters已發佈「定時器」類代碼..檢查出 – Nikunj 2012-01-30 13:53:43

回答

0

對於一個定時器方法,你可以更好的與線程使用。它會工作。 這是Android中使用線程顯示計時器的示例。它每秒都會運行線程。如果你想要改變時間。

Timer MyTimer=new Timer(); 
     MyTimer.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       runOnUiThread(new Runnable() { 
        public void run() { 
         TimerBtn=(Button) findViewById(R.id.Timer); 
         TimerBtn.setText(new Date().toString()); 
       } 
       }); 
      } 
      }, 0, 1000); 
+0

我的定時器代碼工作正常..我需要知道如何找到定時器已完成30secs,以便我可以開始新的活動 – Nikunj 2012-01-30 13:57:26

+0

通過設置時間到特定的計時器,你可以知道完成並在run()中實現該方法。 – Akilan 2012-01-30 13:59:54

0

我要做的就是調用從活動的方法對我CountDownTimer類,像這樣:

//Timer Class inside my Activity 
    public class Splash extends CountDownTimer{ 

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

     @Override 
     public void onFinish() { 
      nextActivity(Login.class, true); 
     } 

     @Override 
     public void onTick(long millisUntilFinished) {} 
    } 

//Method on my Activity Class 

    protected void nextActivity(Class<?> myClass, boolean finish) { 
     Intent myIntent = new Intent(this, myClass); 
     myIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
     startActivity(myIntent); 

     if(finish) 
      finish(); 
    } 
相關問題