fragment清除页面数据(重新加载布局)

上一篇博客介绍了如何解决Fragment重叠的问题,有需要的同学可以看一下,底部有demo下载。
直通车:完美解决Fragment重叠

本篇博客我们来说一下怎么让fragment重新加载布局资源文件。以及要注意的问题。

首先来说一下为什么有这个需求。

比如,我有这么一个页面,如下图

这里写图片描述

该页面要填写一大堆数据,然后点击提交会把当前页面的数据提交到服务器,提交完成后我想把当前页面已填写的数据给清除掉。怎么办呢?

最笨的方法就是,我找到每个控件,然后赋个空值,不过这样也太麻烦了点,而且也不好维护。

简单点的办法就是,当我提交完成后,先把该fragment移除掉,然后重新创建加载一遍,这样一来,页面的数据就回到初始状态了。

需要注意的是要处理好fragment的移除和添加显示操作,避免出现重叠的bug

在fragment中调用一下父activity中的reLoadFragView()方法


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.submit:
                /*模拟提交成功后  重新加载布局*/

                 MainActivity activity= (MainActivity) getActivity();
                activity.reLoadFragView();
                break;
        }

        return super.onOptionsItemSelected(item);
    }

MainActivity中现将fragment移除,然后重新添加显示即可。

     /*重新加载布局*/
    public void reLoadFragView(){
        /*现将该fragment从fragmentList移除*/
        if (fragmentList.contains(dashboardFragment)){
            fragmentList.remove(dashboardFragment);
        }
        /*从FragmentManager中移除*/
        getSupportFragmentManager().beginTransaction().remove(dashboardFragment).commit();

        /*重新创建*/
        dashboardFragment=new DashboardFragment();
        /*添加到fragmentList*/
        fragmentList.add(dashboardFragment);

        /*显示*/
        showFragment(dashboardFragment,DASHBOARD_FRAGMENT_KEY);

    }

需要注意的是,如果报Can not perform this action after onSaveInstanceState这个错误的话,就把commit更改为commitAllowingStateLoss即可。

这里写图片描述

效果图:

这里写图片描述


下面是demo,希望能帮到你。

demo


如果你觉得本文对你有帮助,麻烦动动手指顶一下,算是对本文的一个认可,如果文中有什么错误的地方,还望指正,转载请注明转自喻志强的博客 ,谢谢!

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XeonYu

码字不易,鼓励随意。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值