2011-01-08 3 views
0

onCreateContextMenu() 및 onContextItemSelected()를 통해 컨텍스트 메뉴를 지원하는 기본 ListActivity를 보유하고 있습니다. 이러한 메서드 중 하나가 실패하고 컨텍스트 메뉴가 생성되지 않으면 현재 기본 기능이 onListItemClick()을 시작하는 것 같습니다. 나에게 사용자가 의도적으로 상황에 맞는 메뉴로 이동하기 위해 손가락을 누르고 있으면 항목을 열어 놓고 매우 혼란스럽고 앱이이 제스처를 버리는 경우가 발생할 수 있습니다.onCreateContextMenu()가 실패하면 onListItemClick()을 취소합니다.

유용한 메시지로 토스터를 끄고 실패한 다음 onListItemClick을 취소하면 목록 항목이 열리지 않습니다. 나는 토스트 작업을하고 있지만 onCreateContextMenu() 또는 onContextItemSelected()에서 오류가 발생할 위치에서 클릭 동작을 취소 할 수 있는지 알아 내려고합니다.

감사합니다.

+1

"이러한 방법 중 하나라도 실패하고 컨텍스트 메뉴가 생성되지 않으면"- 왜 실패할까요? – CommonsWare

+0

당신이 맞아서는 안되지만, 샘플 노트 패드 앱의 예제로 캐스팅 오류, 빈 커서 테스트 등과 관련된 try/catch 블록이 있습니다. 실패한 경우 메뉴가 표시되지 않습니다. . –

답변

0

그래서 제가 사용하고있는이 솔루션은 잘 작동하는 것 같습니다. 부울 필드 인 mIgnoreClick을 만들고 onCreate()에서 false로 설정했습니다. 그런 다음 onCreateContextMenu()에서 상황에 맞는 메뉴를 생성하는 동안 오류가 발생하면 mIgnoreClick을 true로 설정하고 현재이 기능을 사용할 수 없음을 경고하는 사용자에게 Toast를 보냅니다. 마지막으로 onListItemClick()에서 mIgnoreClick의 상태를 확인합니다. false이면 항목이 표시되고 true이면 아무 것도 수행되지 않고 mIgnoreClick이 false로 다시 설정되므로 사용자가 listitem을 클릭하고 필요에 따라 열 수 있습니다.

따라서 메뉴가 제대로 생성되지 않으면 아무 것도하지 않습니다. 그들은 항목을 열지 않으려 고했기 때문에이 행동은 내 필요를 충족시킵니다.

관련 문제