1

私はAndroidを初めて使用します(Androidはそれほど熱心ではありませんが、学習しようとしています)。

クリックするとカウントダウンタイマーを開始するさまざまなボタンを備えたアプリケーションを作成しています。

これらのボタンがあるアクティビティでは、次のコードを使用してタイマーを開始します。

    //Button 1 Start On Click
    final CountDown buttonOneTimer = new CountDown(15000,1000);
    buttonOne.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonOneTimer.start();
        }
    });

    //Button 2 Start On Click
    final CountDown buttonTwoTimer = new CountDown(15000,1000);
    buttonTwo.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonTwoTimer.start();
        }
    });

私のCountDownクラスは次のようになります。

public class CountDown extends CountDownTimer {


    public CountDown (long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
    }


    @Override
    public void onFinish() {
        System.out.println("Timer Completed.");
        ****NAMEOFTHEBUTTONCLICKED****.setText("Timer Completed.");
    }

    @Override
    public void onTick(long millisUntilFinished) {
        ****NAMEOFTHEBUTTONCLICKED****.setText((millisUntilFinished/1000)+"");
        System.out.println("Timer  : " + (millisUntilFinished/1000));
    }


}

ボタンのテキストをカウントダウンに設定できるように、押されたボタンの名前をクラスに取得しようとしています。

私はあらゆる種類の間違ったことをしていると確信しています。そうでなければ、もっと良い方法があるかもしれません。ですから、私が改善できる分野を見つけたら、遠慮なく私を批評してください。

ここでチュートリアルを読みましたが、現在のクラス内に「内部クラス」(それが呼ばれていると思いますか?)があります。私の友人は、それが行われることはめったになく、CountDownなどの別のクラスを作成するだけだと言いました。チュートリアルと同じ方法でタイマーを機能させることができます(上記の* NAMEOFTHEBUTTONCLICKED *と表示されているボタンの名前をハードコーディングすることで、そのボタンでのみ機能します)-しかし、それでも方法を理解する必要がありますそのクラスにボタン名を渡すために、タイマーごとに個別のクラスを作成する必要はありません。

それはExtrasを介して行われますか?私は自分の特定の問題についてこれ以上の情報を見つけるのに苦労しました。どんな助けでも大歓迎です!!

4

1 に答える 1

1

ボタンインスタンスをタイマーに渡してみてください。

public class CountDown extends CountDownTimer {

    Button button;
    public CountDown (long millisInFuture, long countDownInterval, Button button) {
        super(millisInFuture, countDownInterval);
        this.button = button;
    }


    @Override
    public void onFinish() {
        System.out.println("Timer Completed.");
        button.setText("Timer Completed.");
    }

    @Override
    public void onTick(long millisUntilFinished) {
        button.setText((millisUntilFinished/1000)+"");
        System.out.println("Timer  : " + (millisUntilFinished/1000));
    }

}

次に、次のように呼び出します。

//Button 1 Start On Click
    final CountDown buttonOneTimer = new CountDown(15000,1000,buttonOne);
    buttonOne.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            buttonOneTimer.start();
        }
    });
于 2013-02-24T03:34:36.717 に答える