当前位置:网站首页>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
边栏推荐
- Prada, big show?In the yuan in the universe that!
- 【mysql索引实现原理】
- 神了!阿里数据库专家纯手写了这份604页的Oracle+MySQL攻坚指南
- rpn:def concat_box_prediction_layers
- Detailed explanation of es6-promise object
- 讯飞创意组别 全国选拔赛成绩公布说明
- Inventory of Loudi Agricultural Products Inspection Laboratory Construction Guidelines
- 基础 | batchnorm原理及代码详解
- Redis 定长队列的探索和实践
- 娄底疾控中心实验室设计理念说明
猜你喜欢
ABAP 里文件操作涉及到中文字符集的问题和解决方案试读版
漏洞管理计划的未来趋势
Custom filters and interceptors implement ThreadLocal thread closure
G1和CMS的三色标记法及漏标问题
关于flask中static_folder 和 static_url_path参数理解
Detailed explanation of es6-promise object
金山云要飘到哪里?
What are the five common data types of Redis?What is the corresponding data storage space?Take you to learn from scratch
生成树协议STP(Spanning Tree Protocol)
跨域的五种解决方案
随机推荐
鸿蒙开发从hello world开始
娄底石油化工实验设计、建设规划概述
“68道 Redis+168道 MySQL”精品面试题(带解析)
接口自动化测试基础篇
OTA自动化测试解决方案---整体方案介绍
LeetCode medium topic search of two-dimensional matrix
没有接班人,格力只剩“明珠精选”
瑞幸「翻身」?恐言之尚早
ABAP 里文件操作涉及到中文字符集的问题和解决方案试读版
47Haproxy Cluster
多线程下自旋锁设计基本思想
基础 | batchnorm原理及代码详解
LeetCode中等题之比较版本号
Real-time data warehouse practice of Baidu user product flow and batch integration
NodeJs原理 - Stream(二)
mSystems | 中农汪杰组揭示影响土壤“塑料际”微生物群落的机制
How to cultivate the design thinking of ui designers?
啥?他一个人写了个价值100万的软件,却用来开源了!
Mysql—— 内连接、左连接、右连接以及全连接查询
Nanodlp v2.2/v3.0光固化电路板,机械开关/光电开关/接近开关的接法和系统状态电平设置