1

我目前正在編寫一個抽屜佈局作爲我的主佈局,其中嵌入了一個FrameLayout,當抽屜上的一個項目被點擊時,我將用它來保存每個「頁面」。當應用第一次啓動時,會顯示一個初始片段。其他片段可能會在後面添加/替換,這很好,但是,我的問題是,當用戶單擊第一個「初始片段」上的後退按鈕時,我不希望將該特定片段從佈局中移除。目前,它正在被刪除,它只顯示沒有其他內容的抽屜佈局(這是有道理的)。如果最初的片段是最後一個片段顯示和後退按鈕被按下,我希望應用程序自動退出,而不是移除該起始片段,然後在另一次後退按下後退出。防止從後臺堆棧中刪除最後一個片段

事情我曾想過這樣做的:

  • 不加入第一個片段到堆棧中。 (如果我這樣做,我可以將它與比較長的字符串片段的類名進行比較,或者在放置第一個片段(並且不添加到backstack)後,我可以使用布爾值,則設置布爾值它允許現在可以添加的片段。
  • 重寫活動的onBackPressed功能

有沒有人有這樣的建議的方式或能想到更好的辦法?謝謝

+0

我會建議第一個選項,即不將片段添加到後臺堆棧 – Krish

+0

我建議覆蓋onBackPressed,並且只有在frsgment堆棧中存在條目時才返回 – EpicPandaForce

回答

2

的第一發子彈這個點聽起來是最乾淨的,你有沒有其他的需要處理返回被擊中時的條件,是正確的?如果是這樣的話,它的代碼行少了(刪除一個而不是添加幾個),你得到保持默認的Activity方法。

我知道這並不完全符合您的要求,但我認爲第一個要點非常乾淨,我不會嘗試其他方法。

+0

實際上,這就是我所問的,並且我認爲是有幫助的。等待接受答案,看看是否還有其他事情發生。謝謝 – Michael

0

我已經在一個應用程序中使用自己的堆棧片段實現了相同的功能。並且還實現了onBackPressed方法。

每當用戶點擊抽屜中的物品時,我會在堆棧中添加碎片,並在其長度爲1時按回來,我會用消息完成活動。

On item click - 在容器中添加/替換片段。

OnBackPressed - 從堆棧中彈出碎片,並在其最後一個完成活動時彈出碎片。

希望這可以給你另一個選擇考慮。