【Fragment】fragment之间的切换,add、show、hide

1、方法一:在大神博客里看到的 http://blog.csdn.net/harvic880925/article/details/44948027
这个方法的逻辑是,需要显示哪个就显示哪个,要隐藏哪个就隐藏哪个。

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、个人偏向于第一种

发布了68 篇原创文章 · 获赞 21 · 访问量 11万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览