ボタンが1回だけ呼び出されるべきアクションをトリガーします。アクションが実行される前にボタンが無効とのonClickハンドラの中に隠されている:Android:ボタン上の複数のonClickイベントを無効にする(無効にされている)
someButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
someButton.setEnabled(false);
someButton.setClickable(false);
someButton.setVisibility(View.GONE);
performTaskOnce();
}
});
private void performTaskOnce() {
Log.i("myapp", "Performing task");
//Do something nontrivial that takes a few ms (like changing the view hierarchy)
}
ボタンを直ちに禁止されていても、非常に迅速に複数回タップすることで、複数の「のonClick」イベントをトリガするためにもかかわらず可能です。 (すなわち、performTaskOnce
は複数回呼び出されます)。 onClickイベントは、ボタンが実際に無効になる前にキューに入れられているようです。
対応するボタンが既に無効になっているが、ハックのように見えるかどうかをすべてのonClickハンドルでチェックすることで問題を解決できます。この問題を避けるためのよりよい方法はありますか?
問題はAndroid 2.3.6で発生し、Android 4.0.3では再現できません。しかし、4.xデバイスの希少性を考えると、古いデバイスを除外することはできません。
この問題は、私にとっては厄介なものでした.. – mohnage7