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

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

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

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

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

这里写图片描述

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

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

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

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

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

@Overridepublic 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


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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部