4

うまくいかないという問題があります。クリックするとテキストビューが変わるボタンがあります。次に、2 秒後に を元のテキストにpostdelayed戻すプロセスをアクティブにします。textview

ボタンを 1 回押してから、この 2 秒間隔内にもう一度postdelay押すと、最初の押しからカウントダウンが続行され、2 回目の押しからは再開されません。これにより、変更されたテキストを表示したいときに元のテキストが表示されます。

ボタンが押されるたびに、そのインスタンスから遅延が発生します。postdelay前のものをキャンセルして、新しいものを開始したい。これはこれまでのところ私のコードですが、完成させる方法がわからないため完成していません(動作しません)。

p1AddL.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            counter1 ++;
            count1 ++;
            Handler h = new Handler();
            if ('PREVIOUS_DELAY_HAS_STARTED') {
                h.removeCallbacks(clickButton);
                h.postDelayed(clickButton, 2000);
            } else {
                h.postDelayed(clickButton, 2000);
            }
            if (count1 > 0) {
                lifepointsP1.setText("+" + count1);
                lifepointsP1.setTextColor(Color.argb(220, 0, 188, 0));
            }
        }
    });

Runnable clickButton = new Runnable() {
    @Override
    public void run() {
        count1 = 0;
        lifepointsP1.setTextColor(Color.WHITE);
        lifepointsP1.setText(counter1);
    }
};

テキストはPREVIOUS_DELAY_HAS_STARTEDある種のチェック方法である必要があり、そのテキストの下のh.removeCallbacksh.postDelayedコマンドの間に何かが必要だと確信しています。

彼らがこのメソッドを機能させるためのより簡単な方法/より良い方法である場合は、私に知らせてください。私は非常に多くの方法を試してきましたが、ここに非常に近いと感じています。

4

1 に答える 1