1

ボタンを無効にして、2回クリックされないようにする方法を知っています。ただし、安全になったらすぐに再度有効にしたい場合は、onclick で setenabled(true) を呼び出すこのようなことを行うことができますか?? setenabled(false) が呼び出されるとすぐにボタンが無効になりますか、それとも onclick 関数が終了したときにのみ無効になりますか?

   button.setOnclickListener(new View.onClickListener(){

          public void onClick(View v) {
                button.setEnabled(false);
                /// do stuff
                button.setEnabled(true);
          }
    });
4

1 に答える 1

3

もっとシンプルにしないのはなぜですか?

booleanプロセスがいつ実行されているかを確認するフラグとして使用します。また、実行中の場合は、前のプロセスが完了するまで実行しないでください。

以下のコード例は、タスクの実行中にonClickListener()がトリガーされないようにします。無効にしてから再度有効にすることを心配する必要はありません。

編集:

(コメントで)長時間の議論の後、ザブリと。念のため、最初に投稿したソリューションを試してみました。そして結局のところ、彼は正しかったのです。:-(

私は最初の解決策を間違えました(これはテストされていませんでしたが、私にはブーフーです)。それでは、動作するテスト済みのソリューションを吸い上げて投稿する時間です。

コードの明らかな欠陥を指摘してくれた Zabriに感謝します。:-)

例 (テスト済みコード):

boolean taskRunning = false;
button1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        if (taskRunning == false) {

            // TOGGLE THE boolean HERE TO INDICATE RUNNING
            taskRunning = true;

            // / do stuff

            // TOGGLE THE boolean HERE TO INDICATE TASK COMPLETED
            taskRunning = false;

        }

    }
});

前述のとおり、これはテストされていないコードです。ここに入力しただけです。

于 2013-04-29T06:50:33.587 に答える