Java 短时间禁用按钮以避免双击
我用下面的代码来拍照Java 短时间禁用按钮以避免双击,java,android,Java,Android,我用下面的代码来拍照 captureBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mCamera.takePicture(null, null, mPicture); } }); 问题是,有时
captureBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
mCamera.takePicture(null, null, mPicture);
}
});
问题是,有时如果用户立即按下按钮两次,它就会崩溃,并出现以下错误
j
如何防止用户在安卓系统中立即双击按钮?您可以在
onClick()
中禁用按钮,然后在图片保存后的某个位置或您打算对其执行的任何操作时再次设置您的clickListener
。我考虑过这一点
captureBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
captureBtn.setEnabled(false);
mCamera.takePicture(null, null, mPicture);
captureBtn.setEnabled(true);
}
});
单击后禁用按钮怎么样?在
onClick()
方法完成之前,再次启用按钮。似乎takePicture
是异步的。你需要在单击时禁用它,然后在回调中重新启用它。@Leviathan我该怎么做?你能给我举个例子吗?我的意思是禁用然后调用这个函数,然后禁用3行代码就行了?@MuhammadUmar,按钮去抖动的一般模式是使用状态变量,例如if(!mClicking){mClicking=true;mCamera.takePicture…}
不要忘了在其中一个回调中重置变量。啊,我看到mPicture本身就是一个监听器,明白了,我在mPicture监听器上设置了enable:)这不会有帮助,因为在onClick()
中,按钮会被禁用并立即启用,所以这样做不是很安全。
captureBtn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
captureBtn.setEnabled(false);
mCamera.takePicture(null, null, mPicture);
captureBtn.setEnabled(true);
}
});