[英]Android Dialog NoSuchMethodException error when using XML onClick
[英]Android - timing when using onclick
我正在尝试创建一个应用程序,该应用程序在按下按钮时每次都会得到不同的结果。 我正在使用一个名为“ counter”的全局int,它每次都会增加+1。
我的问题是,如果我快速按下按钮几次,它会“跳”到最后。 如何在每台印刷机之间留出空间?
我以为使用handler.postDelayed(Runnable,500); 但我不确定这是否是最佳解决方案。 而且-何时以及如何在代码中使用它?
谢谢。
public class MyMain extends Activity implements OnClickListener {
int clickCounter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_my_main);
findViewById(R.id.button1).setOnClickListener(this);
findViewById(R.id.button2).setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button2:
clickCounter = 0;
break;
case R.id.button1:
clickCounter++;
ActionByClick();
break;
}
}
private void ActionByClick() {
// TODO Auto-generated method stub
if (clickCounter == 1){
} else if (clickCounter == 2){
} else if (clickCounter == 3){
} else if (clickCounter == 4){
}
}
}
您可以创建一个计时器,该计时器具有一个阈值,该阈值将在您每次按下按钮时检查一次,因此您无法在特定时间内单击它。
例:
@Override
public void onClick(View v) {
// Preventing multiple clicks, using threshold of 0.5 second
if (SystemClock.elapsedRealtime() - mLastClickTime < 500) {
return;
}
mLastClickTime = SystemClock.elapsedRealtime();
///YOUR BUTTON CLICK HERE
}
if (SystemClock.elapsedRealtime() - mLastClickTime < 500)
检查最后一次单击是否已经是0.5秒。
您可以使用以下代码:
@Override
public void onClick(final View v) {
// do stuff
// Disable the button when it's clicked
v.setEnabled(false);
v.postDelayed(new Runnable(){
@Override
public void run() {
// Enable it after 500ms
v.setEnabled(true);
}
}, 500);
}
这样,当单击按钮时,它将变为禁用状态,并在500ms后返回到启用状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.