2014-10-24 1 views
1

안녕하세요. 프로그램에 문제가 있습니다. 타이머 내에 타이머가 포함 된 레이아웃과 종료 버튼이 필요합니다. 타이머를 성공적으로 완료했지만 문제는 내 종료 버튼 코딩에 있다고 생각합니다. 나는 응용 프로그램을 실행하고 볼 때활동이 계속 실행 중입니까?

package com.MyCompany.MyApp; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.Context; 
import android.os.CountDownTimer; 
import android.os.Handler; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.TextView; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import com.MyCompany.MyApp.R; 


public class Class1 extends Activity implements OnClickListener 
    { 
    Button btn_exit; 
    Intent i = new Intent(this, Class2.class); 
    Handler handler; 
    protected Context context = this; 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     handler = new Handler(); 
     setContentView(R.layout.activity_class1); 


     btn_exit = (Button)findViewById(R.id.btn_exit); 
     btn_exit.setOnClickListener(this); 

     final TextView text4 = (TextView) findViewById(R.id.timer); 

     btn_exit.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 


        finish(); 


     } 
     }); 

     new CountDownTimer(45000, 1000) { 

      public void onTick(long millisUntilFinished) { 
       text4.setText("Seconds remaining: " + millisUntilFinished/1000); 
      } 

      public void onFinish() { 
       text4.setText("Time's up!"); 

       new CountDownTimer(3000, 1000) { 

        public void onTick(long millisUntilFinished) { 

        } 
        @Override 
        public void onFinish() { 


         Intent intent1 = new Intent(context, Class2.class); 
          startActivity(intent1);} 

        }.start(); 

      } 
      }.start(); 

    } 

    @Override 
    public void onClick(View v) { 


     } 
    } 

타이머가 0까지 모든 길을 갈 두 번째 타이머 차기 및 예상대로, 세에서 카운트 다운 후 : 여기

내 코드입니다 프로그램은 현재 활동을 끝내고 다음 활동으로 전환합니다. 이 모든 괜찮아요,하지만 타이머를 내려 시계를 볼 수 있지만, 화면을 종료하고 활동을 완료하더라도 출구 버튼을 치고 싶은 시점에서 결정, 타이머를 카운트 다운으로 진행하고 응용 프로그램을 실행 말할 수 있습니다 Class2로 전환하십시오. 어떻게 그 일을 막을 수 있습니까?

+0

활동에는 onPause() 및 onStop()이라는 라이프 사이클이 있습니다. 이제 활동이 중지 될 예정입니다. 잠시 멈추려 고 할 때입니다. 일시 중지가 화면에 표시되지 않고 다시 스택으로 이동했을 때입니다. onPause() 또는 onStop() 중 하나가 호출되면 타이머가 여전히 카운트 다운 중인지 확인한 다음 쉽게 죽일 수 있습니다. 그것을 시도하고 .. knw하자 – Elltz

+0

유일한 것은 내가 타이머가 다 떨어졌을 때 또는 종료 버튼을 누르면 정확하게 그것을 파괴 수없는 Class1에서 textview에서 정보를 얻을 필요가있다. 타이머가 만료되면 일시 중지해야하지만 사용자가 종료를 누른 다음 예를 누르면 모든 것이 종료되고 타이머도 중지됩니다. – TylerNormal

답변

0

당신이 할 수있는 일은 "ThisActivityExits"와 같은 글로벌 부울 변수를 만드는 것입니다. 클릭 청취자가 변수 값을 변경하면 타이머를 만들고 "if"이를 중지 할 수 있습니다.

+0

가 나는 거짓이 btn_exit.setOnClickListener (새 View.OnClickListener() { @Override 공공 무효 온 클릭 (보기 V) { global1 = 같은 노력이 – TylerNormal

+0

같은 시도 (global1 경우 를 == false)를 finish();}})); 경우 (global1 == TRUE) { 새로운 CountDownTimer (45000, 1000) { 공개 무효 onTick (긴 millisUntilFinished) { text4.setText ("잔여 초"+ millisUntilFinished/1000);} – TylerNormal

+0

공개 무효 onFinish() { text4.setText ("Time up up!"); \t \t \t 새로운 CountDownTimer (3000, 1000) { 공개 무효 onTick (긴 millisUntilFinished) {} ​​ @Override 공개 무효 onFinish() \t \t \t \t \t 의도 intent1 = {새로운 의도 \t \t \t \t \t (문맥 , Class2.class); startActivity (intent1);}}. start();}} start();} else finish(); 내 프로젝트 상단 부근에서이를 선언 한 후 public static boolean global1 = true; – TylerNormal