답변:
에서 이벤트 리스너 :
onLongClick () -이벤트를 소비했는지 더 이상 전달해서는 안되는지 여부를 나타내는 부울을 반환합니다. 즉, 이벤트를 처리했으며 여기서 중지해야 함을 나타내려면 true를 반환합니다. 처리하지 않았거나 이벤트가 다른 온 클릭 리스너로 계속되어야하는 경우 false를 반환합니다.
당신은 반환하는 true
당신의에서 onLongClick()
여전히 정상적인 클릭 이벤트를 받고?
추가 편집 : ListView의 경우 OnItemLongClickListener
. 는 onItemLongClick()
이 이벤트를 소비 여부를 나타내는 유사한 부울 반환 값이 사용합니다.
더 간단한 용어로 답변을 다시 작성하십시오.
주어진:
@Override
public boolean onLongClick(View view) {
return true; // or false
}
return true
이벤트가 소비되었음을 의미합니다. 취급합니다. 다른 클릭 이벤트는 통지되지 않습니다.return false
이벤트가 소비되지 않음을 의미합니다. 다른 모든 클릭 이벤트는 계속해서 알림을받습니다.그래서 당신은 원하지 않는 경우 onClick
도 후 트리거 될 onLongClick
, 당신은해야 return true
로부터 onLongClick
이벤트입니다.
메서드를 재정의 OnClickListener
하고 있는지 확인하십시오 onClick
. 또한이 무시되어 있는지 확인 OnLongClickListener
당신을위한 onLongClick
방법. 그리고 확인하십시오 있는지 확인 onLongClick
메소드가 리턴 true
이 같은이의 소모됩니다 onClick
.
또는 setOnLongClickListener
의 인스턴스 생성 을 구현할 수 있습니다 . Long click을 생성하고 일반 OnclickListener를 구현하면 메서드를 활성화하는 한 번의 클릭으로이 오류가 발생합니다. 긴 클릭 만 포착하는 데 사용해야 합니다.new View.OnClickListener()
new View.OnLongClickListener()
new View.OnLongClickListener()
myListView.setOnItemLongClickListener(this);
옵션을 설정하려면 기능을 재정의해야합니다public boolean onItemLongClick(...)
. 여기return true
에서 LongClick이 활성화되었음을 나타내기만하면 일반 클릭에 대한 트리거가 취소됩니다. false를 반환하면 일반 클릭도 트리거됩니다.