如何延迟按钮点击android

时间:2014-11-19 04:30:04

标签: android

public class MainActivity extends Activity implements NetworkMonitorListener {
    double _mylat = 0;
    double _mylong = 0;
    TextView textView1;

    Button clcikbutton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView1 = (TextView) findViewById(R.id.textView1);

        clcikbutton = (Button) findViewById(R.id.button1);

        clcikbutton.setEnabled(false);

        Timer buttonTimer = new Timer();
        buttonTimer.schedule(new TimerTask() {

            @Override
            public void run() {
                runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        clcikbutton.setEnabled(true);
                    }
                });
            }
        }, 5000));

        clcikbutton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
                        "MM/dd/yyyy hh:mm:ss aa");
                simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
                textView1.setText(DateFormat.getDateTimeInstance().format(
                        new java.util.Date("11/7/2014 5:19:11 AM UTC")));

            }
        });

    }
}

这是我的按钮点击延迟的代码。我正在尝试实现,当我点击按钮,然后它应该禁用5秒然后它应该工作。请帮助我在哪里我做错了因为那里是错误来了。

6 个答案:

答案 0 :(得分:5)

尝试使用Handler在给定时间内禁用按钮:

clcikbutton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
       SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa");
       simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
       textView1.setText(DateFormat.getDateTimeInstance().format(new java.util.Date("11/7/2014 5:19:11 AM UTC")));
       clcikbutton.setEnabled(false);
       new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                clcikbutton.setEnabled(true);        
            }
        },5000);
    }
});

答案 1 :(得分:0)

5000之后有两个结束括号请检查。

尝试添加一些1000期。

Timer buttonTimer = new Timer();
            buttonTimer.schedule(new TimerTask() {

                @Override
                public void run() {
                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            clcikbutton.setEnabled(true);
                        }
                    });
                }
            }, 5000, 1000);

答案 2 :(得分:0)

为什么不这样:

    clcikbutton = (Button) findViewById(R.id.button1);
    clcikbutton.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {

            clcikbutton.setEnabled(false);

            Timer buttonTimer = new Timer();
            buttonTimer.schedule(new TimerTask() {

                 @Override
                 public void run() {
                      clcikbutton.setEnabled(true);
                 }
            }, 5000));

       }
 });

答案 3 :(得分:0)

Timer不稳定,请考虑使用Handler的{​​{1}}方法。试试这个:

postDelay()

这些代码可以为您提供所需的代码:首先会使按钮可以点击,然后在您点击它时将其禁用5秒。

希望这有帮助。 :)

答案 4 :(得分:0)

您可以使用 Handler 在延迟一段时间后执行代码行:

 clickbutton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    // Do something after 5s = 5000ms
                    clickbutton.setEnabled(true);
                }
            }, 5000);

        }
    });

希望它会帮助你ツ

答案 5 :(得分:0)

这是您在Kotlin中的操作方式:

lifecycleScope.launch {
  buttonTimer.isEnabled = false
  delay(400) // debounce effect
  buttonTimer.isEnabled = true
}