不管Fragment以何種方式加入,都不會影響backstack,backstack由addToBackStack函數決定,只有調用了這個函數,纔會將Fragment加入返回棧。這個說法其實不太準確,返回棧記錄的是Fragment切換的過程,因此加入返回棧的是Transaction,而不是Fragment自己。函數
那麼add和replace的區別是什麼呢?io
以add方式加入Fragment,底層的Fragment被覆蓋,當按下返回鍵時,當前Fragment彈出返回棧,底層Fragment直接顯示出來,無需重建。底層
以replace方式加入Fragment,底層Fragment被替換(replace嘛),當按下返回鍵時,當前Fragment彈出返回棧,底層Fragment須要重建。而後再顯示出來。