Android Fragment使用hide和show方法的問題
Fragment的強大是毋庸置疑的,現在是越來越喜歡使用它了,但是使用中我也是頭疼了好一陣,各種小bug層出,記錄一下:
我們使用Fragment去填充佈局的時候,是有兩種方法可以實現的:一種是使用fragment的管理器的replace()方法,另一種就是使用hide()和show()方法對Fragment顯示隱藏。
很明顯replace()方法就是不斷的替換覆蓋當前佈局,每一次的replace()都會重新例項化一個Fragment,這種方法適合所銷燬的Fragment不需要我們儲存狀態,每次都需要重新載入的,但是有時是不想不斷的去例項化Fragment的這樣也是比較耗時的(尤其是在網路較差時),而且很多時候業務上要求也不是要實時重新整理資料的,這時候就要使用這hide和收尾方法了,不去每次都new一個Fragment。 之前我有寫過hide和show方法(http://blog.csdn.net/my_jack/article/details/52934447),可以去看一下。
當我使用hide和show方法的時候遇見了問題了,當我的三個Fragment A , B , C都例項化之後,我在B介面顯示的時候,點選B介面會執行C介面的點選事件。當時真的是下了我這一下,好詭異啊。不斷測試一下,發現當B介面沒有了點選事件設定時會發生這種點選穿透佈局的事件。應該是宿主儲存了各個Fragment的狀態了,所以在需要的Fragment中重寫一下onSaveInstaceState方法就可以了:
@Override
protected void onSaveInstanceState(Bundle outState) {
//阻止activity儲存fragment的狀態
//super.onSaveInstanceState(outState);
}
還在研究中,如果有更好的方法在更新嘍