当前位置:网站首页>Fragment-hide和show

Fragment-hide和show

2022-08-10 12:38:00 锐湃

为了节约资源,现在很多 app 采用了 replace() 方法来实现碎片的切换,但是在这种情宽下,如果不讲之前的碎片雅茹栈中,就无法避免之前碎片回随之销毁,所以我们采用 hide() 和 show() 方法来实现碎片的切换。

实现效果

效果图项目地址--GitHub - hornhuang/android-SignInSystem: ️ 致力于打造一款极致签到系统,技术和美是可以并存的哦!同时期待你的 star 🥳~


这里不讲废话直接给出最佳方案

首先,定义四个成员

private Fragment mContent = new Fragment();// 记录下当前碎片 由于替换
 
private Fragment mPerson;
private Fragment mRanking;
private Fragment mSummary;
private FragmentTransaction transaction;

 

其次,在 OnCreate() 方法中,对他们进行初始化

mPerson = new Personal();
mRanking = new Ranking();
mSummary = new Summary();
fragmentManager = getSupportFragmentManager();
mContent = mRanking;
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.fragment, mContent).commit();
navigation.setSelectedItemId(R.id.navigation_home);

最后,在按钮点击时调用

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {
 
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:
                switchContent(mPerson);
                return true;
            case R.id.navigation_dashboard:
                switchContent(mRanking);
                return true;
            case R.id.navigation_ranking:
                switchContent(mSummary);
                return true;
        }
        return false;
    }
};
    private void switchContent(Fragment to) {
        if (mContent != to) {
            FragmentTransaction transaction = fragmentManager.beginTransaction();
            if (!to.isAdded()) { // 判断是否被add过
                // 隐藏当前的fragment,将 下一个fragment 添加进去
                transaction.hide(mContent).add(R.id.fragment, to).commit();
            } else {
                // 隐藏当前的fragment,显示下一个fragment
                transaction.hide(mContent).show(to).commit();
            }
            mContent = to;
        }
 
    }

完整代码地址 --> 
点击跳转-- https://github.com/FishInWater-1999/android-SignInSystem/blob/master/app/src/main/java/com/example/joker/signinsystem/activities/MainActivity.java


————————————————
版权声明:本文为CSDN博主「圆号本昊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43377749/article/details/89854480

原网站

版权声明
本文为[锐湃]所创,转载请带上原文链接,感谢
https://blog.csdn.net/chuyouyinghe/article/details/126262079