Fragment回退栈,与Activity的通讯

本文探讨了Android中Fragment回退栈的概念,解释了如何避免Fragment的不必要的销毁和创建。介绍了两种Fragment与Activity通讯的方法:通过在Activity中设置setData方法,以及更推荐的回调接口方式。回调接口具有更好的复用性和类似观察者模式的设计,提高了代码的灵活性。
摘要由CSDN通过智能技术生成

什么是回退栈

使用replace方法切换Fragment,会造成Fragment不断销毁、创建,比如当AFragment跳转到BFragment时AFragment就销毁了,再返回时就直接到activity了.要想返回到AFragment就需要把它在转发时添加到回退栈

  • 方法:addToBackStack(null)
    例如: getFragmentManager().beginTransaction().replace(R.id.container_f1, bFragment).addToBackStack(null).commitAllowingStateLoss();

  • hide(fragment)方法
    但是这样仍然有个毛病.比如在A转发到B之前,我在A里面改变了一些样式,那么转发再回来的时候这些样式会消失,而是显示一个最开始的视图.原因是返回的时候重新调用了onCreateView方法,视图被重新刷新.

  • 要解决这个问题就不能用replace方法了,而是先把A隐藏,然后在add一个B,这样返回时就不用重新调用onCreateView方法,原来的A视图会保留

 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
   
        super.onViewCreated(view, savedInstanceState);
        textView = view.findViewById(R.id.ftv);
        btnChange = view.findViewById(R.id.btn_change);
        btnReset = view.findViewById(R.id.btn_reset);
        btnChange.setOnClickListener(new View.OnClickListener() {
   
            @Override
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值