当达到时间时,计时器启动活动

时间:2012-02-05 21:40:18

标签: android asynchronous android-activity android-intent chronometer

我希望在达到新活动时启动新活动,到目前为止,我遇到了一些麻烦。这就是我到目前为止所拥有的。我希望你们明白我想做什么。如果有一种更简单的方法可以告诉我。也许我应该把它放在一个线程中?

 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);
            }

        }

我的整个代码:

    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);
                }

            }
        }
    }

1 个答案:

答案 0 :(得分:6)

尝试在Chronometer.OnChronometerTickListener上实施Activity,并将chronometer()中的代码放在那里(或相关部分)。

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
        }
    }
}