Когда на экране есть несколько фрагментов, как узнать, когда пользователь взаимодействует ЛЮБЫМ способом с помощью одного из фрагментов? Возможно, они нажимают кнопку, прокручивают список, вставляют поля в полях, что угодно.Как узнать, когда пользователь взаимодействует с фрагментом?
Я подумал, что, возможно, я получаю прослушиватель onClick/onTouch/onFocusChanged на фрагменте/FrameLayout, содержащем макет фрагмента/корня интерфейса фрагмента, но они не срабатывают.
Я попробую установить различные ручные триггеры, например, «если пользователь нажмет эту кнопку или прокрутит это представление или это поле получит фокус, тогда пользователь взаимодействует с этим фрагментом», но, очевидно, это более сложный и сильно подверженный к неточному поведению.
Не знаете, зачем мне это нужно? Вот пример использования:
Подумайте о Gmail на планшете: в ландшафте слева отображается первое сообщение справа и первое сообщение справа. Если я нажимаю другое сообщение, оно отображается справа. Если я повернусь к портрету, он покажет сообщение, которое я выбрал последним.
Если я начну с портрета, он отобразит папку «Входящие».
Теперь вот трюк: скажем, я начинаю в ландшафте, показывая входящие слева, первое сообщение справа. Если я немедленно поверну устройство к портрету. Но если я взаимодействую с панелью справа (скажем, прокручивая сообщение электронной почты), а затем поверните устройство, оно покажет это первое сообщение. Gmail догадывается, был ли я больше заинтересован в почтовом ящике или в электронной почте и показал это.
Мой вызов делает что-то подобное в приложении. Когда я поворачиваюсь из пейзажа (показывая две панели) к портрету (показывая одну панель), я не уверен, показывать ли представление списка или подробное представление по умолчанию. Если бы я мог сказать, взаимодействовал ли пользователь с детальным представлением каким-то образом (с помощью клавиатуры или сенсорного экрана), то я знаю, чтобы показать это.
Вы пробовали это: http://stackoverflow.com/questions/21882251/how-to-handle-touch-events-on-a-fragment? Если ваш фрагмент не получает событие, это означает, что другой вид перехватывает его. –
Да, я пробовал onTouchListener в корневом макете. Он не срабатывает. –