Android Fragment
其中很重要的概念就是 Transaction 和 BackStack。
所謂 BackStack是紀錄一個 Transaction,並不是一個 Fragment。
所以 Transaction 的 method 裡面 BackStack其實是把整個 Transaction 紀錄下來,
AddToBackStack(name)所要放的參數 name 其實只是這個 transaction 的Tag。
並在 User 按下硬體 Back 鍵的時候,Reverse(逆執行) Transaction 之前執行過的行為。
範例:
A fragment add B fragment
按下 back 鍵之後
系統執行 remove B fragment
所以當沒有執行 AddToBackStack的時候,系統沒有記得Transaction
當 User 按下Back鍵,當然也就不會跑 remove,之前被 add 上的 Fragment也就不會跑 onPause()。
後記:
為什麼會打這篇?
因為網路上看了很多文章,發現沒人這樣寫過。
雖然用錯的概念也寫了幾個月了,但弄懂之後還是寫了這篇分享給大家。
有不懂的,有獨到見解的,歡迎留言。
沒有留言:
張貼留言