【Fragment】fragment之間的切換,add、show、hide
阿新 • • 發佈:2019-02-20
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、個人偏向於第一種