2012-01-30 44 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(); 
    } 
相关问题