Android ';OnClickListener';他没有反应
我正在尝试将Android ';OnClickListener';他没有反应,android,eclipse,android-imageview,onclicklistener,ontouchlistener,Android,Eclipse,Android Imageview,Onclicklistener,Ontouchlistener,我正在尝试将OnClickListener和OnTouchListener添加到我的图像视图中。下面是如何创建图像视图 dialogImage = (ImageView)findViewById(R.id.dialogImage); 下面是侦听器的设置方式 dialogImage.setOnClickListener(dialogBoxClicked); dialogImage.setOnTouchListener(imageViewSwiped); 下面是侦听器方法的实现 public O
OnClickListener
和OnTouchListener
添加到我的图像视图中。下面是如何创建图像视图
dialogImage = (ImageView)findViewById(R.id.dialogImage);
下面是侦听器的设置方式
dialogImage.setOnClickListener(dialogBoxClicked);
dialogImage.setOnTouchListener(imageViewSwiped);
下面是侦听器方法的实现
public OnClickListener dialogBoxClicked = new OnClickListener()
{
@Override
public void onClick(View v)
{
//To do has been removed because the code is too big
}
};
OnTouchListener imageViewSwiped = new OnSwipeTouchListener()
{
public void onSwipeRight()
{
currentlyActiveQuestion++;
currentWord = words.get(currentlyActiveQuestion);
setUI();
}
public void onSwipeLeft()
{
currentlyActiveQuestion--;
currentWord = words.get(currentlyActiveQuestion);
setUI();
}
};
在这里,OnTouchListener
由一个名为OnSwipeTouchListener
的类实现,用于监视左右滑动。该类可在此处找到-
但现在的问题是,当我将OnTouchListener
设置为图像视图时,OnClickListener
没有响应/没有做它应该做的事情。ImageView仅对TouchListener的作出响应。如果我删除OnTouchListener
,则OnClickListener
可以工作。我在eclipse中的虚拟设备WVGA5.1和Galaxy Nexus中测试了这一点,而不是在真正的手机上,因为我没有
我怎样才能解决这个问题
编辑
任何代码示例都将非常感谢OnTouchListener钩住click事件。改为处理其中的单击事件。在OnTouchListener钩住click事件上查看答案。改为处理其中的单击事件。根据我的经验,如果您不能将onTouchListener和onClickListener都用于同一视图,请查看上的答案。如果您希望onClickListener工作,请在XML中设置clickable=“true”
。根据我的经验,如果您不能将onTouchListener和onClickListener同时用于同一视图。如果希望onClickListener工作,请在XML中设置clickable=“true”
。当操作启动时,可以调用View.performClick()。这导致在实际单击发生时调用单击事件。希望能有帮助
your_txtView.setOnClickListener(new TextView.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
your_txtView.setOnTouchListener(new TextView.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction()) {
} else if (MotionEvent.ACTION_UP == event.getAction()) {
v.performClick();
}
return true;
}
});
当操作启动时,可以调用View.performClick()。这导致在实际单击发生时调用单击事件。希望能有帮助
your_txtView.setOnClickListener(new TextView.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
your_txtView.setOnTouchListener(new TextView.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (MotionEvent.ACTION_DOWN == event.getAction()) {
} else if (MotionEvent.ACTION_UP == event.getAction()) {
v.performClick();
}
return true;
}
});
请尝试从onDown()
方法返回false
。我认为ontouchlistener与onclicklistener重叠。。点击相当于触摸,您的touchListener会截获所有触摸事件(通常由onDown返回true表示。因此,无法检测到点击。请改为查看@mach answer。请尝试从onDown()返回false
)
method…我认为你的ontouchlistener与你的onclicklistener重叠..一次点击就等于一次触摸,你的touchListener会截获所有触摸事件(通常由onDown返回true表示。因此,无法检测到点击。请参阅@mach answer。好的,我们是否有可能无法监控虚拟设备中的实际刷卡?@Knight:您可以详细说明一下。为什么不想监控实际刷卡?您在刷卡时做了一些正确的事情?或者我不明白您的意思。)你说得对。不,我是说我听从了你的建议。现在我可以刷卡和点击了。但问题是,大多数时候我刷卡的时候它会被“点击”。有时它会被点击和刷卡。所以我想这可能是因为我使用的是虚拟设备,鼠标指针是指示“手指”的指针是的,是的,这是因为使用了虚拟设备。在实际设备上运行你的代码它会工作的。好的,有没有可能我们不能监控虚拟设备中的实际刷卡?@Knight:你能详细说明一下吗。你为什么不想监控实际刷卡?你在刷卡上做了一些正确的事情?或者我没有正确理解你。不,我的意思是我听从了你的建议。现在我可以进行滑动和单击。但问题是,大多数情况下,当我滑动时,它会被“单击”。有时它会被单击和滑动。所以我想这可能是因为我使用的是虚拟设备,鼠标指针是指示“手指”的指针是的,是的,这是因为使用了虚拟设备。请在实际设备上运行您的代码,它将正常工作。