2014-10-24 3 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) { 


     } 
    } 

Когда я запустить приложение и посмотреть таймер пройти весь путь вниз к нулю, второй пинки таймера в и отсчет с трех, как и положено, а затем программа завершает текущую деятельность и переключается на следующую. все нормально, но скажу, что я запустил приложение, наблюдаю, как таймер идет вниз, но решите в любой момент, когда я хочу нажать кнопку выхода, хотя он выходит из экрана и заканчивает действие, таймер по-прежнему переходит к обратному отсчету и переключитесь на Class2. Как я могу остановить это от этого?

+0

действия имеют жизненные циклы, которые являются onPause() и onStop(), теперь на остановке, когда активность около b убита onpause, когда она перемещается в backstack и не отображается на экране .. так что все, что вы делаете, это когда либо onPause(), либо onStop() называется вы проверяете, по-прежнему ли таймер сбрасывается, тогда вы его убиваете, легко .. звучит законно? попробуйте это .. и позвольте мне knw – Elltz

+0

Единственное, что мне нужно, чтобы получить некоторую информацию из текстового поля в Class1, чтобы я не мог точно уничтожить его, когда таймер закончится или когда нажата кнопка выхода. Вероятно, он должен быть приостановлен, если таймер заканчивается, но если пользователь нажимает на выход, тогда да, он убивает все, останавливая таймер. – TylerNormal

ответ

0

Что вы можете сделать, это создать глобальную логическую переменную типа «ThisActivityExits», на вашем клик-слушателе вы измените значение переменной, и вы можете создать и «if» внутри своего таймера, чтобы остановить ее.

+0

я пытался что-то вроде этого – TylerNormal

+0

я пытался что-то вроде этого btn_exit.setOnClickListener (новый View.OnClickListener() { @Override общественного недействительными OnClick (View об) { global1 = false; если (global1 == ложь) finish();}}); если (global1 == верно) { нового CountDownTimer (45000, 1000) { общественных недействительный OnTick (длинный millisUntilFinished) { text4.setText ("Остались секунды:" + millisUntilFinished/1000);} – TylerNormal

+0

общественных недействительный onFinish() { text4.setText («Время до!»); \t \t \t нового CountDownTimer (3000, 1000) { общественных недействительный OnTick (длинный millisUntilFinished) {} ​​ @Override общественных недействительный onFinish() {\t \t \t \t \t \t \t \t \t \t Намерение intent1 = новый Intent (контекст , Class2.class); startActivity (intent1);}}. Start();}}. Start();} else finish(); после объявления этого в верхней части моего проекта public static boolean global1 = true; – TylerNormal