1. 程式人生 > >【Fragment】fragment之間的切換,add、show、hide

【Fragment】fragment之間的切換,add、show、hide

public void switchContent(Fragment from, Fragment to) {  
    if (!to.isAdded()) {    // 先判斷是否被add過  
        transaction.hide(from).add(R.id.content_frame, to).commit();
    } else {  
        transaction.hide(from).show(to).commit();
    }  
}  

我很好奇怎麼得到當前顯示的Fragment from的,網上很多說用這個方法:

Fragment fromFragment = fragmentManager.findFragmentById
(R.id.content_frame);

不過我是遇到點問題。同屬一個activity的三個fragment,getId()得到的id都是一樣的,這個fromFragment隨時都是一樣的id值。這個地方還沒找到答案,保留問題。
那麼如果要用繼續上述方法,那就宣告一個變數 tabId,用於記錄當前的fragment是第幾個fragment。
如下:

from = fragmentLists.get(tabId);

2、方法二:在之前用過的一個框架中看到的
這個方法邏輯是,顯示需要顯示的,其餘的全部都hide。
如下:

int index;    // index是需要顯示的那個
for(int i = 0; i < fragmentLists.size(), i++){ if (index == i) { if (fragment.isHidden()) { trasaction.show(fragment); } } else { if (!fragment.isHidden()) { trasaction.hide(fragment); } } }

3、個人偏向於第一種