안녕하세요 하나의 이미지가있는 ImageButton이 하나 있습니다. onclick 이벤트를 추가하고 일반적으로 잘 작동합니다. Imagebutton을 클릭하면 항목 추가 기능이 작동합니다.Android GUI :: 연속 클릭 이벤트가 중단됩니다.
사용자가 내 이미지 단추를 계속 클릭하면 내 추가 항목 기능이 동일한 데이터로 여러 번 실행됩니다. 나는 그것을 막고 싶다. 즉, Imagebutton은 내 함수가 완전히 실행될 때까지 다음 클릭 이벤트를 처리하기 위해 큐에 대기해서는 안됩니다.
OnClick 이벤트가 실행되는 즉시 myImageButton.setEnable(false)
을 시도했습니다. 그리고 나서 내 데이터 입력 기능을 수행 한 후
myImageButton.setEnable(true)
을 입력하십시오.
또한이 코드를 myImageButton.isEnabled()
에 넣으려고했으나 작동하지 않았습니다.
대기중인 클릭 이벤트를 무시하는 방법은 무엇입니까? 클릭 처리를 무시하거나 무시하는 다른 방법이 있습니까 (setEnable()
)?
println 문을 사용하여 각 클릭 이벤트가 동기화되었음을 확인했습니다 ... 모든 코드가 순서대로 실행됨을 의미합니다.
편집
private OnClickListener m_AddClickHandler = new OnClickListener()
{
public void onClick(View v)
{
if(m_bDoAdd)
{
m_bDoAdd = false;
new AddTask().execute();
}
else
logData("Add::OnClick::not clicked");
}
};
private class AddTask extends AsyncTask<Void, Void, Integer>
{
@Override
protected Integer doInBackground(Void... params)
{
logData("doinbg, start"+m_bDoAdd);
int iStatus =Add(m_data);
logData("doinbg, start end, status="+iStatus+"flag="+m_bDoAdd);
return iStatus;
}
@Override
protected void onPostExecute(Integer result)
{
logData("onpostExec, start"+m_bDoAdd);
int iStatus = result;
if (iStatus == 0)
{
Toast.makeText(getApplicationContext(), R.string.strAdded, Toast.LENGTH_SHORT).show();
}
else if (iStatus == 1)
{
Toast.makeText(getApplicationContext(), R.string.strAlreadyExists, Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getApplicationContext(), R.string.strAddFailed, Toast.LENGTH_SHORT).show();
}
m_bDoAdd = true;
logData("onpostExec, end"+m_bDoAdd);
}
}
void Add()
{
// Add info to db (takes few msecs)
}
난 아직도 받고 있지 않다 "추가 ::의 OnClick : 클릭하지"로그에.
추가 실마리?
setClickable (부울 값)을 사용해야합니다. 항상 저에게 효과적입니다. – Klaus