当前位置:网站首页>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
边栏推荐
- Codeforces Round #276 (Div. 1) D. Kindergarten
- 娄底疾控中心实验室设计理念说明
- M²BEV: Multi-Camera Joint 3D Detection and Segmentation with Unified Bird’s-Eye View Representation
- Solution for "Certificate not valid for requested usage" after Digicert EV certificate signing
- Overview of Loudi Petrochemical Experiment Design and Construction Planning
- 想问下大佬们 ,cdc oracle初始化一张300万的表任务运行着后面就这个错 怎么解决哇
- How to cultivate the design thinking of ui designers?
- MYSQL误删数据恢复
- 用低代码驱动IT现代化
- NodeJs原理 - Stream(二)
猜你喜欢
Solution for "Certificate not valid for requested usage" after Digicert EV certificate signing
iTextSharp操作PDF
生成树协议STP(Spanning Tree Protocol)
Custom filters and interceptors implement ThreadLocal thread closure
Redis 定长队列的探索和实践
AICOCO AI Frontier Promotion (8.10)
【论文+代码】PEBAL/Pixel-wise Energy-biased Abstention Learning for Anomaly Segmentation on Complex Urban Driving Scenes(复杂城市驾驶场景异常分割的像素级能量偏置弃权学习)
Nanodlp v2.2/v3.0 light curing circuit board, connection method of mechanical switch/photoelectric switch/proximity switch and system state level setting
一个 CRM One Order Application log 的单元测试报表
es6-promise对象详解
随机推荐
商汤自研机械臂,首款产品是AI下棋机器人:还请郭晶晶作代言
Mysql—— 内连接、左连接、右连接以及全连接查询
Merge similar items in LeetCode simple questions
漏洞管理计划的未来趋势
Have you guys encountered this problem?MySQL 2.2 and 2.3-SNAPSHOT are like this, it seems to be
MySQL索引的B+树到底有多高?
神了!阿里数据库专家纯手写了这份604页的Oracle+MySQL攻坚指南
跨域的五种解决方案
金山云要飘到哪里?
Nanodlp v2.2/v3.0 light curing circuit board, connection method of mechanical switch/photoelectric switch/proximity switch and system state level setting
CodeForces - 834C
ArcMAP has a problem of -15 and cannot be accessed [Provide your license server administrator with the following information:Err-15]
实践为主,理论为辅!腾讯大佬MySQL高阶宝典震撼来袭!
百度用户产品流批一体的实时数仓实践
数字藏品,“赌”字当头
MySQL相关问题整理
LeetCode medium topic search of two-dimensional matrix
线代 | 秒杀方法与技巧
OTA自动化测试解决方案---整体方案介绍
燃炸!字节跳动成功上岸,只因刷爆LeetCode算法面试题