2016-09-30 11 views
0

화면에 조각이 여러 개있을 때 사용자가 단편의 특정 조각과 어떤 방식으로도 상호 작용할 때를 어떻게 알 수 있습니까? 아마도 버튼을 누르거나 목록을 스크롤하거나 필드를 통해 탭을 올릴 수도 있습니다.사용자가 단편과 상호 작용할 때를 알려주는 방법은 무엇입니까?

Fragment UI의 Fragment/root 레이아웃이 포함 된 Fragment/FrameLayout에 onClick/onTouch/onFocusChanged 수신기가있을 것이라고 생각했지만 실제로는 실행되지 않습니다.

"사용자가이 버튼을 클릭하거나이보기를 스크롤하거나이 필드가 포커스를 얻으면 사용자가이 부분과 상호 작용했습니다."와 같이 다양한 수동 트리거를 설정하려고 시도하지만 분명히 더 복잡하고 높은 경향이 있습니다 부정확 한 행동.

내가 왜 이것을 필요로하는지 잘 모르시겠습니까? 다음은 사용 사례입니다.

태블릿에서 Gmail을 생각해보십시오. 가로로 보면 수신함이 왼쪽에 표시되고 오른쪽에 첫 번째 메시지가 표시됩니다. 다른 메시지를 탭하면 오른쪽에 표시됩니다. 세로로 회전하면 마지막으로 선택한 메시지가 표시됩니다.

내가 세로로 시작하면받은 편지함이 표시됩니다.

이제 실제 트릭이 있습니다. 가로로 시작하여 왼쪽의받은 편지함, 오른쪽의 첫 번째 메시지를 표시한다고합시다. 즉시 장치를 세로 방향으로 돌리면 그러나 내가 오른쪽 창과 상호 작용 (예 : 전자 메일 메시지 스크롤) 한 다음 장치를 회전하면 첫 번째 메시지가 표시됩니다. Gmail은 내가받은 편지함이나 이메일에 더 관심이 있는지 여부를 추측하여이를 보여줍니다.

내 도전 과제는 앱에서 비슷한 일을합니다. 가로 방향 (두 개의 창 표시)에서 세로 방향 (한 창 표시)으로 회전 할 때 목록보기를 표시할지 또는 기본 상세 뷰를 표시할지 모르겠습니다. 사용자가 키보드 또는 터치 스크린을 통해 세부적인보기와 어떤 방식으로 상호 작용했는지 알 수 있다면 그 사실을 알 수 있습니다.

+0

시도해 보셨습니까? http://stackoverflow.com/questions/21882251/how-to-handle-touch-events-on-a-fragment? 조각이 이벤트를 얻지 못하면 다른 뷰가 이벤트를 가로 챕니다. –

+0

예, 루트 레이아웃에서 onTouchListener를 시도했습니다. 그것은 발사되지 않습니다. –

답변

0

결국, 나는 이것을 작동시킬 수있는 좋은 깨끗한 방법을 찾지 못했습니다.

대신에, 사용자가 단편과 상호 작용할 수 있도록 ListView를 터치하고 버튼을 클릭하는 등의 작업을 수행 할 수 있습니다. - 활동에 대한 메시지를 시작합니다 (Listener 인터페이스를 사용하여 Activity 구현, 코스).

그런 다음 활동은 사용자가 기본 조각과 상호 작용했는지 여부를 추적하여 해당 값을 저장하고 복원해야합니다.

지저분하지만, 내가 생각해 낼 수있는 전부입니다. :/

관련 문제