你好 我有一個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(boolean) - 總是爲我工作。 – Klaus 2011-02-23 12:58:11