2013年6月2日 星期日

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()。







後記:

為什麼會打這篇?

因為網路上看了很多文章,發現沒人這樣寫過。

雖然用錯的概念也寫了幾個月了,但弄懂之後還是寫了這篇分享給大家。

有不懂的,有獨到見解的,歡迎留言。

沒有留言:

張貼留言