0

アクティビティ A、B、C、D があります...アクティビティ A でカウントダウンタイマーを作成します....アクティビティ B、C、D でそのメソッドを呼び出したいです....どうすればいいですか...私は試しましたタイマー変数を静的にしますが、いくつかの問題があり、適切に機能しません...また、プログラミングの良い方法ではありません..これを行う他の方法はありますか??

public class CountTime extends Activity {

    static MyCount count;
    Button clickBtn;
    TextView tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.customanim); // 5000 is
                                                                // the
                                                                // starting
                                                                // number
                                                                // (in
                                                                // milliseconds)
        // 1000 is the number to count down each time (in milliseconds)
        count = new MyCount(5000, 1000);
        count.start();
        tv = (TextView) findViewById(com.example.sample.R.id.textView1);

        clickBtn = (Button) findViewById(R.id.button1);
        clickBtn.setText("Click me");
        clickBtn.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                Intent my = new Intent(getApplicationContext(),
                        MainActivity.class);
            //my.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(my);
            }
        });
    }

    @Override
    public void onUserInteraction() {
        // TODO Auto-generated method stub
        super.onUserInteraction();
        //count.start();
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        count.cancel();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        count.start();
    }

    // countdowntimer is an abstract class, so extend it and fill in methods
    public class MyCount extends CountDownTimer {
        public MyCount(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onFinish() {
            tv.setText("done!");
            Toast.makeText(getApplicationContext(), "Finsihed", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onTick(long millisUntilFinished) {
            tv.setText("Left: " + millisUntilFinished / 1000);
        }
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
    }
}
4

1 に答える 1

0

おそらく、そのための最良のアプローチは、Timer を使用して Singleton クラスを作成することです。

シングルトンが何であるかわからない場合は、以下のソースで見つけることができます: http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html http://en.wikipedia .org/wiki/Singleton_pattern

于 2012-12-06T10:30:42.900 に答える