Fragment的show()、hide()和attach()、detach()切换方式生命周期过程

el/2024/5/23 1:54:49
1.使用show()、hide()方式进行fragment切换
    @Overridepublic void onClick(View view) {switch (view.getId()){case R.id.main_home:switchFragmentWithShowHide(0);break;case R.id.main_shop:switchFragmentWithShowHide(1);break;case R.id.main_community:switchFragmentWithShowHide(2);break;case R.id.main_mine:switchFragmentWithShowHide(3);break;}}private void hideAllFragment(){FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();if (homeFragment != null){transaction.hide(homeFragment);}if (shopFragment != null){transaction.hide(shopFragment);}if (communityFragment != null){transaction.hide(communityFragment);}if (mineFragment != null){transaction.hide(mineFragment);}transaction.commit();}private void switchFragmentWithShowHide(int position){hideAllFragment();FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();switch (position){case 0:if (homeFragment == null){homeFragment = new HomeFragment();transaction.add(R.id.main_container , homeFragment , homeFragment.getClass().getName());}else {transaction.show(homeFragment);}break;case 1:if (shopFragment == null){shopFragment = new ShopFragment();transaction.add(R.id.main_container , shopFragment , shopFragment.getClass().getName());}else {transaction.show(shopFragment);}break;case 2:if (communityFragment == null){communityFragment = new CommunityFragment();transaction.add(R.id.main_container , communityFragment , communityFragment.getClass().getName());}else {transaction.show(communityFragment);}break;case 3:if (mineFragment == null){mineFragment = new MineFragment();transaction.add(R.id.main_container , mineFragment , mineFragment.getClass().getName());}else {transaction.show(mineFragment);}break;}transaction.commit();}

点击展示HomeFragment时,由于HomeFragment是未创建状态,所以会执行HomeFragment的创建生命周期

09-26 15:56:02.090 32733-32733/com.example.testfragment E/HomeFragment: onAttach: 
09-26 15:56:02.090 32733-32733/com.example.testfragment E/HomeFragment: onCreate: 
09-26 15:56:02.091 32733-32733/com.example.testfragment E/HomeFragment: onCreateView: 
09-26 15:56:02.101 32733-32733/com.example.testfragment E/HomeFragment: onActivityCreated: 
09-26 15:56:02.101 32733-32733/com.example.testfragment E/HomeFragment: onStart: 
09-26 15:56:02.102 32733-32733/com.e

http://www.ngui.cc/el/5181690.html

相关文章

aar包导入引起的Error:Failed to resolve: :xxxaar: 的问题

在Android Studio中 如果在module中依赖了aar库,当build工程的时候,会出现failed to resolve的错误 想要解决这个问题可以在app的build.gradle中加入下面代码: repositories {flatDir {dirs libs}}举个栗子:在app的build.gradle里…

Android Studio新建module,以及module引用aar等相关问题

一、新建module如果是作为lib被引用,需要选择Android Library。 二、作为lib的module如果引用了aar文件: 1、把aar文件放到module的libs目录下 2、作为lib的module的gradle文件: repositories {flatDir {dirs libs} }dependencies {.....…

Mysql在Spring中配置hibernate的字符编码格式

真正的配置非常简单,只需要在链接字符串加上对应的参数即可,如下示例:jdbc:mysql://localhost:3306/zbdx_jxdd?useUnicodetrue&characterEncodingUTF-8 useUnicodetrue &characterEncodingUTF-8是编码相关的配置,useUni…

windows操作系统下 ORACLE11g 重装系统后根据dbf恢复数据库

重点前提是:安装一个和原系统一致的oracle 环境,主要包括版本、数据名sid、实例名、路径和数据库编码一致 1. 进入cmd窗口,执行 sqlplus /nolog 命令; 2. 命令窗口输入 conn /as sysdba 登陆; 3. 命令窗口输入 …

VMware网络环境配置-桥接模式

近期在学习Hadoop相关知识,之前并未接触Linux系统,因此一并从头开始学习,在这个过程中,遇到不少问题,因此想要把学习过程整理一下,记录下来,以便以后回顾,也希望我的记录对其他人有帮…

Linux下配置Hadoop伪分布式环境

一、环境资源 JDK和Hadoop存在版本兼容问题,选择安装包的时候一定要考虑到两个软件的版本兼容,我这里选择的安装版本如下: JDK1.8:https://pan.baidu.com/s/1Rm5ErmvKFjVmwx1uAF90vQ 提取码:kpreHadoop2.7&#xff1…

Linux下配置Hadoop 全分布式环境(基于SecondaryNode)

一、环境资源 JDK和Hadoop存在版本兼容问题,选择安装包的时候一定要考虑到两个软件的版本兼容,我这里选择的安装版本如下: JDK1.8:https://pan.baidu.com/s/1Rm5ErmvKFjVmwx1uAF90vQ 提取码:kpreHadoop2.7&#xff1…

Linux下配置Hadoop 高可用环境搭建

一、环境资源 JDK和Hadoop存在版本兼容问题,选择安装包的时候一定要考虑到两个软件的版本兼容,我这里选择的安装版本如下: JDK1.8:https://pan.baidu.com/s/1Rm5ErmvKFjVmwx1uAF90vQ 提取码:kpreHadoop2.7&#xff1…

Linux下配置Hadoop 高可用环境基础上增加MapReduce配置

1. 服务器配置:在高可用的基础上,增加ResourceManger和NodeManger,因为192.168.1.6和192.168.1.7两个节点已经作为Name Node节点,因此将192.168.1.8和192.168.1.9作为ResourceManger节点,NodeManger管理的是DataNode的…

关于环信android的消息时间的问题解决---getMsgTime()

关于getMsgTime() 环信android的getMsgTime()获取的是毫秒,必须用 DateUtils.getTimestampString(new Date(mConversation.getLastMessage().getMsgTime()));转化