うまくいかないという問題があります。クリックするとテキストビューが変わるボタンがあります。次に、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.removeCallbacks
とh.postDelayed
コマンドの間に何かが必要だと確信しています。
彼らがこのメソッドを機能させるためのより簡単な方法/より良い方法である場合は、私に知らせてください。私は非常に多くの方法を試してきましたが、ここに非常に近いと感じています。