你好 我有一个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