当屏幕上有多个片段时,如何判断用户何时以任何方式与特定的一个片段进行交互?也许他们点击按钮,滚动列表,浏览字段,任何内容。
我原本以为我会在Fragment / FrameLayout上获得一个onClick / onTouch / onFocusChanged监听器,其中包含片段UI的片段/根布局,但它们不会被触发。
我会尝试设置各种手动触发器,例如"如果用户单击此按钮或滚动此视图或此字段获得焦点,则用户已与此片段进行交互"但显然这更复杂,更容易出现不准确的行为。
不确定我为什么需要这个?这是用例:
在平板电脑上考虑Gmail:在横向上,收件箱显示在左侧,第一条消息显示在右侧。如果我点击其他消息,则会显示在右侧。如果我旋转为肖像,它将显示我上次选择的消息。
如果我以肖像方式开始,则会显示收件箱。
现在这里是真正的诀窍:让我说我从风景开始,在左边显示收件箱,在右边显示第一条信息。如果我立即将设备旋转为纵向。但是,如果我与右侧的窗格进行交互(例如,滚动电子邮件消息)然后旋转设备,它将显示第一条消息。 Gmail猜测我是否对收件箱或电子邮件更感兴趣并显示。
我的挑战是在应用中做类似的事情。当我从横向(显示两个窗格)旋转到纵向(显示一个窗格)时,我不确定是显示列表视图还是默认详细视图。如果我能告诉用户是否以某种方式(通过键盘或触摸屏)与详细视图进行了交互,那么我知道要显示它。
答案 0 :(得分:0)
最后,我找不到任何好的,干净的工作方式。
相反,对于每个单独的方式,用户可以与片段交互 - 触摸ListView,单击按钮等等 - 我会触发一条消息到Activity(使用Activity实现的Listener接口,当然)。
然后,Activity会跟踪用户是否与默认片段进行了交互,确保保存并恢复该值。
它很乱,但我能想到的就是它。 :/