Search code examples
androidasynchronousandroid-activityandroid-intentchronometer

chronometer start activity when time is reached


I want a new activity to start when a new activity is reached, so far i've been having some trouble. This is what i have so far. I hope you guys understand what i am trying to do. If there is an easier way that works please tell me. perhaps i should put this in a thread?

 Chrono = (Chronometer) findViewById(R.id.chronometer1);
        Chrono.start();
        while (!(Chrono.equals(chronoText))) {
            chronoText = Chrono.getText().toString();
            if (chronoText.equals("00:30")) {
                Intent intent = new Intent(getApplicationContext(),
                        Hw3Activity.class);
                startActivity(intent);
            }

        }

My whole code:

    public class Next extends Activity {
        Button returned;
        Button click;
        Button search;
        EditText clicksearch;
        TextView counted;
        int counter;
        int answer;
        Chronometer Chrono;
        CharSequence chronoText;

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.screentwo);
            // waiter = new Waiter(60 * 1000); // 1 min
            // waiter.start();

            Chrono = (Chronometer) findViewById(R.id.chronometer1);
            Chrono.start();
            Log.d("Ebz", "uhh");
            returned = (Button) findViewById(R.id.returned);
            click = (Button) findViewById(R.id.click);
            search = (Button) findViewById(R.id.search);
            clicksearch = (EditText) findViewById(R.id.clicksearch);
            counted = (TextView) findViewById(R.id.counted);
    chronometer(); // its called here
returned.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    counter = 0;
                    Intent intent = new Intent(getBaseContext(), Hw3Activity.class);
                    answer = intent.getIntExtra("meaningOfLife", -1);

                    Intent i = getIntent();
                    i.putExtra("returnInt", answer);
                    setResult(RESULT_OK, i);
                    startActivity(intent);

                }
            });
            click.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    counter++;
                    counted.setText(String.valueOf(counter));
                    Chrono.setBase(SystemClock.elapsedRealtime());

                }
            });
            search.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
                    intent.putExtra(SearchManager.QUERY, clicksearch.getText()
                            .toString());
                    startActivity(intent);
                }
            });
            clicksearch.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                }
            });
        }

        public void chronometer() {
            while (!(Chrono.equals(chronoText))) {
                chronoText = Chrono.getText();
                Log.d("Ebz", "makes it to chronometer");
                counted.setText(String.valueOf(chronoText));
                if (chronoText.equals("00:10")) {
                    Intent intent = new Intent(getApplicationContext(),
                            Hw3Activity.class);
                    startActivity(intent);
                }

            }
        }
    }

Solution

  • Try implementing Chronometer.OnChronometerTickListener on your Activity and put the code from chronometer() in there (or the relevant part).

    public class Next extends Activity
        implements Chronometer.OnChronometerTickListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            ...
    
            Chrono = (Chronometer) findViewById(R.id.chronometer1);
            Chrono.setOnChronometerTickListener(this);
            Chrono.start();
    
            ...
        }
    
        public void onChronometerTick(Chronometer chronometer) {
            if ("00:10".equals(chronometer.getText()) {
                // Create Intent and start the new Activity here
            }
        }
    }