Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 达到时间后,计时器开始活动_Android_Asynchronous_Android Activity_Android Intent_Chronometer - Fatal编程技术网

Android 达到时间后,计时器开始活动

Android 达到时间后,计时器开始活动,android,asynchronous,android-activity,android-intent,chronometer,Android,Asynchronous,Android Activity,Android Intent,Chronometer,我希望在达到新活动时开始新活动,到目前为止,我遇到了一些麻烦。这就是我目前所拥有的。我希望你们明白我想做什么。如果有更简单的方法,请告诉我。也许我应该把这个放在一根线里 Chrono = (Chronometer) findViewById(R.id.chronometer1); Chrono.start(); while (!(Chrono.equals(chronoText))) { chronoText = Chrono.getTe

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

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

            }
        }
    }

尝试在您的
活动中实现
计时器。OnChronometerTickListener
,并将
计时器()
中的代码放入其中(或相关部分)


您遇到的具体问题是什么?30秒后不会调用该活动。我想在30秒后开始一个新的活动,但它什么也做不了我去掉了toString()并改变了类型,但我仍然没有得到我想要的结果。计时器的显示是否真的像它应该的那样在屏幕上计数?是的,它计数并显示所有内容。我应该发布我的全部代码吗?这种方法看起来确实比我之前的方法更干净,我今晚晚些时候会尝试,如果它有效,我会接受答案,谢谢你,我很快就会回来。酷-很高兴能帮上忙。祝你好运。为什么要在
Chrono.setOnChronometerTickListener()
中将“this”作为参数传递?我对android很陌生。当Java类实现接口时,它必须实现接口的各种方法。在这种情况下,类被称为
Next
(它本身扩展了
活动
),接口是
Chronometer.OnChronometerTickListener
。该接口定义了一个名为
onChronometerTick
的方法,该方法是每次
计时器“滴答”时调用的方法。这是通过
Next
实现的,正如您在上面的代码中所看到的那样….在下面的注释中继续….为了让
计时器
知道如何找到该方法,我们调用
setOnChronometerTickListener
方法,并将实现
onChronometerTick
方法的类的实例传递给它。在本例中,实例是
活动本身,Java关键字
this
指调用
setOnChronomertickListener
的任何对象的当前实例。这不是特定于Android的,这是一个Java的东西-谷歌的“Java这个关键字”和阅读它-你会使用它很多。
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
        }
    }
}