全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

关于Android Fragment对回退栈的详细理解

目录
  • 测试项目
  • 结论

测试项目

FragmentActivity

public class FragmentActivity extends AppCompatActivity {
    private FrameLayout frameLayout;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fragment);
        frameLayout = findViewById(R.id.fl_content);
        button = findViewById(R.id.btn_click);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Fragment fTwo = new FragmentOne();
                FragmentManager fm = getSupportFragmentManager();
                FragmentTransaction tx = fm.beginTransaction();
                tx.replace(R.id.fl_content, fTwo, "One");
                tx.addToBackStack(null);//添加回退栈
                tx.commit();
                System.out.println("fm.getBackStackEntryCount() = " + fm.getBackStackEntryCount());
            }
        });
    }
}

FragmentOne(FragmentTwo、FragmentThree同理)

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View mView = inflater.inflate(R.layout.fragment_one, container, false);
        editText = mView.findViewById(R.id.et_input);
        button = mView.findViewById(R.id.btn_next);
        System.out.println("mView.findViewById = "+editText);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Fragment fTwo = new FragmentTwo();
                FragmentManager fm = getActivity().getSupportFragmentManager();
                FragmentTransaction tx = fm.beginTransaction();
                tx.replace(R.id.fl_content, fTwo, "TWO");
                tx.addToBackStack(null);
                tx.commit();
                System.out.println( "fm.getBackStackEntryCount() = "+ fm.getBackStackEntryCount());
            }
        });

        return mView;
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.d("Tina======>", "onStop");
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.d("Tina======>", "onDestroyView"+editText);
    }

    @Override
    public void onDetach() {
        super.onDetach();
        Log.d("Tina======>", "onDetach");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d("Tina======>", "onDestroy");
    }

前提条件是添加fragmet的时候都是用的replace(先remove 后add)

操作1:全部添加回退栈的操作

生命周期开启的时候,打开到第三个fragment

开启.png

回退的时候

结束.png

操作2:fragmentOne不加回退栈,其他加

生命周期开启的时候

开启.png

回退的时候

结束.png

结论

1.replace 会销毁视图,生命周期走到了onDestroyView

2.加入回退栈,返回的时候,fragment还可以重新显示出来,否则返回的时候,就直接销毁了

3.加入回退栈后,返回时会重新走onCreateView方法,重新绑定视图,也就是说,实例对象会变

举例:recyclerview的话,返回来后,之前setAdapter就没有了,因为对象换了

注意有一个还会是原来的值,是因为它对数据有保存,他就是edictText(要有id值)


# Android Fragment回退栈  # Android Fragment回退栈详解  # Android Fragment回退栈实例  # Android Fragment 基本了解(图文介绍)  # Android 管理Activity中的fragments  # Android基础之使用Fragment控制切换多个页面  # android开发教程之实现滑动关闭fragment示例  # FrameLayout和Fragment处理Android应用UI布局实例  # Android的Fragment的生命周期各状态和回调函数使用  # Android App中使用ViewPager+Fragment实现滑动切换效果  # Android App中ViewPager与Fragment结合的一些问题解决  # Android程序开发之Fragment实现底部导航栏实例代码  # 详解Android应用中DialogFragment的基本用法  # 都是  # 是因为  # 还可以  # 还会  # 要有  # 就没  # 换了  # 不加  # 绑定  # 它对  # 到第  # 有一个  # 前提条件  # 也就是说  # super  # onCreate  # id  # fl_content  # btn_click  # Bundle 


相关文章: 建站之星后台密码如何安全设置与找回?  网站制作新手教程,新手建设一个网站需要注意些什么?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  建站主机是否等同于虚拟主机?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  如何在腾讯云服务器快速搭建个人网站?  高防服务器租用首荐平台,企业级优惠套餐快速部署  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  建站之星免费模板:自助建站系统与智能响应式一键生成  如何快速生成凡客建站的专业级图册?  建站与域名管理如何高效结合?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何用狗爹虚拟主机快速搭建网站?  教学论文网站制作软件有哪些,写论文用什么软件 ?  建站主机选择指南:服务器配置与SEO优化实战技巧  C++如何使用std::optional?(处理可选值)  建站VPS配置与SEO优化指南:关键词排名提升策略  独立制作一个网站多少钱,建立网站需要花多少钱?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  专业商城网站制作公司有哪些,pi商城官网是哪个?  建站DNS解析失败?如何正确配置域名服务器?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  学校为何禁止电信移动建设网站?  实例解析Array和String方法  如何使用Golang安装API文档生成工具_快速生成接口文档  网站app免费制作软件,能免费看各大网站视频的手机app?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何快速搭建自助建站会员专属系统?  制作证书网站有哪些,全国城建培训中心证书查询官网?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  Swift开发中switch语句值绑定模式  建站主机如何选?性能与价格怎样平衡?  如何选择建站程序?包含哪些必备功能与类型?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何快速生成高效建站系统源代码?  制作网页的网站有哪些,电脑上怎么做网页?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何用免费手机建站系统零基础打造专业网站?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  建站主机是否属于云主机类型?  建站主机选哪种环境更利于SEO优化?  b2c电商网站制作流程,b2c水平综合的电商平台?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  建站之星×万网:智能建站系统+自助建站平台一键生成  历史网站制作软件,华为如何找回被删除的网站?  建站之星logo尺寸如何设置最合适?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。