2013-11-27 2 views
0

작동하는 countdowntimer를 만들었지 만 각 활동에서 다시 시작됩니다. 카운트 다운 값을 저장하고 두 번째 활동에서 사용하려고합니다. 아래는 주요 활동 페이지의 카운트 다운 코드입니다.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를 확장 startscreen {

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(){ 

} 

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

편집 한 후 내 두 번째 활동에 내가있어

  //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(); 


} 

2과 :

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

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

답변

0

내가 제안 중 하나를 자신의 클래스의 CountDownTimer를 작성하고 시작 후 Service로 확장하고 타이머를 시작하거나 모든 활동이 동일한 타이머에 액세스 할 수 있도록 싱글 톤으로 만듭니다.

+0

나는 그것을 자신의 클래스에 만들려고했으나 카운트 다운은 작동하지 않았다. 단지 고정 된 값인 10을 표시했다. 나는 여전히 싱글 톤을 만드는 방법을 조사하고있다. 나는 오히려 안드로이드에 처음이다. 제안 해 주셔서 감사합니다. – user3041828

1

Application 클래스를 확장하고 거기에 전역 타이머를 추가하십시오. 귀하의 클래스는 또한 getApplicationContext() from an activity

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

를 호출하여이 타이머를 시작

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

    public void cancelTimer(){ 
     ... 
    } 
} 
처럼 보일 당신이 당신의 안드로이드 매니페스트에서 응용 프로그램 이름을 변경해야합니다 것입니다.

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

다른 활동에서이 타이머를 어떻게 호출합니까? 감사. 새 코드를 게시했습니다. – user3041828

+0

타이머를 표시하려고했지만 매번 응답하지 않습니다. 코드를 수정했습니다. – user3041828