关闭

解决Fragment重叠问题

514人阅读 评论(0) 收藏 举报
分类:

用add 、hide、show的方式将fragment添加到栈里面,这样显示的时候就不需要重新创建一个fragment,比较好的保存了fragment的当前的状态,可是在一键清理后回到界面发现会出现重叠的情况,解决的方法是移除栈里面存在的fragment,这样就可以去掉重叠是现象了,可是一键清理后,可能一下整个应用需要到的有用数据被清理掉了,整个应用去捕捉的话有点啰嗦,而且与用于的意图相冲突,所以解决的建议是:移除栈,如何重新启动应用。


添加fragment的方法:

/**
	 * 切换fragment 
	 * @param from     前一个Fragment 
	 * @param to       后一个Fragment          
	 */
	public void switchContent(Fragment from, Fragment to) {	
		if (from != to) {		
				mTransaction = mManager.beginTransaction();
				if (!to.isAdded()) {
					mTransaction.hide(from).add(R.id.main_fragment_layout, to,TAG[mChecknum]);

				} else
					mTransaction.hide(from).show(to);				 
				mTransaction.commit();
			}
		
	}



重新启动的方法:

private void restartApplication() {
		//重启前把栈里面的fragment全部清除掉,否则会出现重叠的现象		
		mTransaction = mManager.beginTransaction();
		for(int i = 0;i<=6;i++){
			Fragment cashefra=getFragmengCashe(TAG[i]);
			if(cashefra!=null){
				mTransaction.remove(cashefra);
			}			
		}			
		mTransaction.commit();
		Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());		
		intent.setClass(MainActivity.this, MainActivity.class);		
		startActivity(intent);
		this.finish();				
	}


记得保存状态:

@Override  
	public void onCreate(Bundle savedInstanceState) {	
		
		
		
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		
		
		setContentView(R.layout.activity_main);		
		
		if (savedInstanceState != null) {			       			
			 restartApplication();	//不保存状态,只要内存清空就会重启				
					
		}	 
		
		inite();	
		
	  
	}
	
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		outState.putInt("FRAMENT_TAG", mChecknum);
		super.onSaveInstanceState(outState);
	}


注意:重启的话,Mainactivity的启动模式应该是standard。






1
0
查看评论

Android开发技术点2——Fragment叠加点击穿透解决方案

Fragment, 点击穿透
  • dong19870625
  • dong19870625
  • 2016-01-20 18:02
  • 2361

关于Fragment重叠问题分析和解决

相信大家在使用Fragment的过程中,肯定碰到过Fragment重叠的问题,重启应用就好了。然而原因是什么呢?
  • whitley_gong
  • whitley_gong
  • 2016-07-22 12:32
  • 7889

安卓使用Fragment出现重叠现象解决办法

Fragment切换重叠解决办法
  • chenduyu
  • chenduyu
  • 2017-04-05 14:04
  • 1363

彻底解决Fragment重叠的问题

使用Show和Hide切换fragment时防止重叠问题出现的解决办法
  • u011734444
  • u011734444
  • 2016-11-26 05:20
  • 2486

Android fragment 重叠问题的解决方法

由于这个项目的首页是类似微信的那种 tab 有四个界面 联系人,消息,动态,设置四个界面,因为有频繁的切换,所以就没有使用replace 和 remve方法。而是通过hide,show方式,这样虽然不会重复创建Fragment了,节省了view重绘的性能问题。 但是这样就容易导致一个问题:就是程序长...
  • weizongwei5
  • weizongwei5
  • 2015-03-03 12:15
  • 11984

fragment重叠的完美解决方案

fragment重叠 fragment重叠原因分析 fragment重叠解决方案
  • yuzhiqiang_1993
  • yuzhiqiang_1993
  • 2017-07-15 16:09
  • 733

Fragment重叠解决方案

  • 2017-07-15 16:02
  • 24.68MB
  • 下载

Fragment重叠问题引发的思考

参考: http://stackoverflow.com/questions/16189088/overlapping-hidden-fragments-after-application-gets-killed-and-restored http://stackoverflow.co...
  • jiangxuqaz
  • jiangxuqaz
  • 2016-06-18 20:35
  • 5303

Fragment UI显示重叠问题

问题引入FirstFragmentpublic class FirstFragment extends Fragment { private static final String TAG = "FirstFragment"; @Override publi...
  • showdy
  • showdy
  • 2016-03-08 11:19
  • 971

Android fragment 重叠问题的解决方法

这边博客是想说一下在参考http://m.blog.csdn.net/article/details?id=44036543这边博客解决问题时遇到的一下坑,原文如下: 由于这个项目的首页是类似微信的那种 tab 有四个界面 联系人,消息,动态,设置四个界面,因为有频繁的切换,所以就没有使用repl...
  • lantiankongmo
  • lantiankongmo
  • 2016-04-01 17:29
  • 5727
    个人资料
    • 访问:104797次
    • 积分:2143
    • 等级:
    • 排名:千里之外
    • 原创:113篇
    • 转载:20篇
    • 译文:0篇
    • 评论:107条
    最新评论