我正在尝试在另一个线程运行时执行不可单击的ImageView。然后,当线程完成时,再次返回ImageView可点击状态。
这样的事情:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
imageView.setClickeable(false); // or setEnabled = false
new Thread(){
public void run(){
anotherClass.secondClassMethod();
}
}.start();
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
...
}
});
}
private anotherClassCallback callback = new anotherClassCallback(){
@Override
public void hasFinished(){
imageView.setClickable(true); // or setEnabled = true
}
};
但它实际上不起作用,因为,例如,如果我在线程运行时在imageView上单击3次,当hasFinished方法执行时,它看起来像是保持我的3次点击然后直接运行3 onTouch。
有人知道发生了什么事吗?
你好!
答案 0 :(得分:2)
onTouch和onClick不相同,因此当您设置onClickable时,仍会触发错误触摸事件。也许尝试在setOnClickListener()
中做你正在做的事情答案 1 :(得分:0)
你应该使用asynctask而不是thread。 如下面的答案中所提到的,你应该使用setOnclickListener而不是setOntouchListener。
new AsyncTask<Void,Void,Void>(){
onPreExectute(){
imageView.setClickeable(false);
imageView.setOnclickListener(null);
}
doInBackround(){
}
onPostExecute(){
imageView.setClickeable(true);
imageView.setOnclickListener(new OnclickListener(){
onClick(View v){
}
});
}
}.execute();