2016-09-30 57 views
0

當屏幕上有多個片段時,如何判斷用戶以何種方式與特定的片段進行交互?也許他們點擊一個按鈕,滾動列表,選項卡通過字段,任何東西。如何判斷用戶何時與片段交互?

我曾想過,也許我會在包含片段UI的片段/根佈局的片段/ FrameLayout上獲得onClick/onTouch/onFocusChanged偵聽器,但它們不會觸發。

我會嘗試設置各種手動觸發器,例如「如果用戶單擊此按鈕或滾動此視圖或此字段獲得焦點,那麼用戶已與此片段交互」,但顯然這是更復雜和更容易不準確的行爲。

不知道爲什麼我需要這個?以下是使用案例:

想想平板電腦上的Gmail:在橫向上,收件箱顯示在左側,第一條消息顯示在右側。如果我點擊不同的信息,它會顯示在右側。如果我旋轉到肖像,它會顯示我上次選擇的消息。

如果我以肖像開頭,它會顯示收件箱。

現在,我們來看看真正的技巧:我從橫向開始,在左側顯示收件箱,在右側顯示第一條消息。如果我立即將設備旋轉到肖像。但是,如果我與右側的窗格進行交互(例如,滾動電子郵件),然後旋轉設備,它將顯示第一條消息。 Gmail猜測我是否對收件箱或電子郵件更感興趣,並表明這一點。

我的挑戰是在應用程序中做類似的事情。當我從橫向(顯示兩個窗格)旋轉到縱向(顯示一個窗格)時,我不確定是顯示列表視圖還是默認的詳細視圖。如果我可以告訴用戶是否以某種方式(通過鍵盤或觸摸屏)與詳細視圖進行交互,那麼我知道要證明這一點。

+0

你試過這個:http://stackoverflow.com/questions/21882251/how-to-handle-touch-events-on-a-fragment?如果你的片段沒有得到這個事件,那意味着其他一些視圖攔截它。 –

+0

是的,我已經嘗試了根佈局上的onTouchListener。它不會着火。 –

回答

0

最後,我找不到任何好的,乾淨的方式來工作。

相反,對於用戶可以與Fragment進行交互的每種單獨的方式 - 觸摸ListView,單擊按鈕等 - 我將觸發一條消息給Activity(使用Listener接口的Activity實現,課程)。

然後Activity會跟蹤用戶是否與默認Fragment交互,確保保存並恢復該值。

這很混亂,但這是我所能想到的。 :/