티스토리 뷰

지난 프로젝트를 진행하던 중 한 객체에서 클릭 이벤트와 롱클릭 이벤트를 구현할 일이 있었다.

구현을 마치고 실제로 어플을 동작 시켜 테스트를 해보았더니 롱클릭 이벤트가 실행 되고 나서 원하지 않는 클릭 이벤트가 실행된다는 사실을 알게 되었다.

 

 

왜 그런가 찾아보니 나의 onLongClick() 함수의 반환값 때문이었다.

 

 

|예시와 해결방안

기본적으로 onLongClick이벤트를 오버라이딩 하면 onClick과는 다르게 반환 값이 있는 것을 알 수 있다. 

이 반환 값은 Click이벤트와의 동시 실행을 설정 하기 위한 반환 값이다. 

 

 

각 설정은 다음과 같다

-return 기본값 false. true로 하면 onClick 동시 실행안됨

-false : 다음 이벤트 계속 진행, true는 이벤트 완료

 

 

기본값은 false 이고 false일 경우에는 다음 이벤트가 계속 진행되어 롱클릭 후 클릭 이벤트가 실행되고, true 일 경우는 클릭 이벤트가 끝나게 된다. 

아래의 예시와 같이 사용 하면 된다.

@Override
public boolean onLongClick(View v) {   
switch (v.getId()){
        case R.id.img_drink:   
            Toast.makeText(context, "Longdrink", Toast.LENGTH_SHORT).show();
            break;
        case R.id.img_pee: 
            homeViewModel.subPee();
            tv_peeCnt.setText(homeViewModel.getPeeCount().toString());
            break;
        case R.id.img_feces:  
            homeViewModel.subFeces();
            tv_fecesCnt.setText(homeViewModel.getFecesCount().toString());
            break;
    }
    return true;    //onClick 동시 실행 안됨
}

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함