全网整合营销服务商

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

免费咨询热线: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 


相关文章: 新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  ,sp开头的版面叫什么?  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  *服务器网站为何频现安全漏洞?  c# await 一个已经完成的Task会发生什么  制作网站怎么制作,*游戏网站怎么搭建?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  建站之星各版本价格是多少?  如何快速搭建安全的FTP站点?  Python如何创建带属性的XML节点  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  css网站制作参考文献有哪些,易聊怎么注册?  西安专业网站制作公司有哪些,陕西省建行官方网站?  手机网站制作与建设方案,手机网站如何建设?  如何高效完成自助建站业务培训?  ,制作一个手机app网站要多少钱?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  制作表格网站有哪些,线上表格怎么弄?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  制作企业网站建设方案,怎样建设一个公司网站?  建站之星3.0如何解决常见操作问题?  nginx修改上传文件大小限制的方法  Android自定义控件实现温度旋转按钮效果  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  已有域名能否直接搭建网站?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  网站专业制作公司有哪些,做一个公司网站要多少钱?  广州营销型建站服务商推荐:技术优势与SEO优化解析  佛山企业网站制作公司有哪些,沟通100网上服务官网?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何在云主机上快速搭建网站?  C#如何使用XPathNavigator高效查询XML  淘宝制作网站有哪些,淘宝网官网主页?  建站DNS解析失败?如何正确配置域名服务器?  网站图片在线制作软件,怎么在图片上做链接?  黑客如何通过漏洞一步步攻陷网站服务器?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  招商网站制作流程,网站招商广告语?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  教学论文网站制作软件有哪些,写论文用什么软件 ?  宝塔面板如何快速创建新站点?  如何在建站之星绑定自定义域名?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊? 

您的项目需求

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