【问题标题】:setOnClickListener and setOnLongClickListener call on single button issuesetOnClickListener 和 setOnLongClickListener 调用单个按钮问题
【发布时间】:2012-11-08 08:31:08
【问题描述】:

如果可以的话,我需要你的帮助,这对我的解决方案来说将是一件好事。 我不知道这是否可能,但我想尝试以任何方式解决这个问题.. 其实我想在单键点击事件上实现两种方法,简单点击和长点击,这里是我的代码::

homebutton = (ImageButton) findViewById(R.id.home_icon);
homebutton.setOnClickListener(new OnClickListener() {
    public void onClick(View arg0) {
        Intent intent = new Intent(context, MainActivity.class);
        startActivity(intent);
    }
});
homebutton.setOnLongClickListener(new OnLongClickListener() {
    public boolean onLongClick(View arg0) {
        Toast.makeText(getApplicationContext(), "Long Clicked " , Toast.LENGTH_SHORT).show();
        return false;
    }
});

所以,这里我弄错了,即使单击也能正常工作,长按也能正常工作,但问题是,在长按事件之后,它也会启动 MainActivity,如上面的 onClick 方法代码中定义的那样..

不应该这样做,return false 也在那里,仍然无法按我的意愿工作.. 所以,请任何人帮助我解决它..

提前致谢..

【问题讨论】:

  • 当然会做同样的事情,因为我得到了完美的答案。谢谢!!

标签: android onclicklistener onlongclicklistener


【解决方案1】:

我相信您需要在您的 onLongClick 方法中返回 TRUE - 告诉框架触摸事件已被消耗,不需要进一步的事件处理。

homebutton.setOnLongClickListener(new OnLongClickListener() {
    public boolean onLongClick(View arg0) {
        Toast.makeText(getApplicationContext(), "Long Clicked " ,
              Toast.LENGTH_SHORT).show();

        return true;    // <- set to true
    }
});

【讨论】:

  • 谢谢哥们,它工作得很好..理解代码的愚蠢错误..但是谢谢..
  • 那是 Maps API v1 吗?我正在使用 v2;它是OnMapLongClickListeneronMapLongClick(LatLng pos) 方法返回void
猜你喜欢
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多