-1

私は約 20 のアクティビティを含むアプリケーションを作成しています。アクティビティ 1 の開始時にカウントアップタイマーを開始し、最後のアクティビティのカウントを終了したいと考えています。サブクラスを作成して 1 アクティビティでタイマーを呼び出す方法を見つけましたが、タイマーの値をアクティビティ 1 からアクティビティ 2 および 2 から 3 に渡す方法がわかりませんでした。これは私のコードです

サブクラス

package com.mytimer;

import java.lang.ref.WeakReference;

import java.util.TimerTask;
import android.os.Handler;

import android.widget.TextView;



public class IncrementTask extends TimerTask {

    WeakReference<TextView> mRef;
    int counter = 0;
    Handler handler = new Handler();

    public IncrementTask(TextView text) {
        mRef = new WeakReference<TextView>(text);
    }

    public void run() {
        handler.post(new Runnable() {
            public void run() {
                mRef.get().setText("counter " + counter);
                counter++;
            }
        });
    }
}

私の活動で 1

TextView mTextView = (TextView)findViewById(R.id.text);
        Timer timer = new Timer();
        IncrementTask task = new IncrementTask(mTextView);
        timer.scheduleAtFixedRate(task, 0, 1000);

        Button btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent i = new Intent (MainActivity.this, Page2.class);
                startActivity(i);

            }       
        });

タイマーの値を次のアクティビティに渡す方法を知りたいのですが、タイマーを 0 から開始するのではなく、助けてください

4

2 に答える 2

2

私の意見では、アクティビティの代わりにフラグメントを使用します。フラグメントを使用すると、タイマーと残りのコンテンツを含む2つのフラグメントを画面に表示できるためです。

アクティビティを使用する場合、ある画面から別の画面に移動している間、正確なタイマー値を表示することはできません。

于 2013-02-18T06:15:25.493 に答える
0

その後の活動をどのように始めますか?startActivity()またはstartActivivtForResult()を使用すると思いますが、これが当てはまる場合は、インテントで時間をコールドパスします。しかし、それは良い解決策ではありません。なぜなら、その過程で、見つめている活動が秒単位で正確ではないため、「時間を失う」からです。プロセスの最後に開始し、最後に終了するタイマーアクティビティを作成してみませんか?

于 2013-02-18T06:15:04.893 に答える