Android应用UI开发中Fragment的常见用法小结

2019-12-10 19:00:10于海丽

模拟用户点击返回键,将指定的fragment从返回栈中弹出,该操作为异步的。前提是该fragment对象使用.beginTransaction().addToBackStack("right")添加了进返回栈

manager.popBackStack(); //Pop the top state off the back stack  
(4).FragmentTransaction事务
事务主要包含一些操作的集合,比如增加移除替换,动画设置等等

/* 
 * 通过manager开启一个事务,该事务包含一些操作的集合,通事务可以 add(), remove(), replace() 
 * 完成对Fragment的操作,并使用commit()提交 
 */ 
FragmentTransaction transaction = manager.beginTransaction(); 
 
transaction.replace(R.id.right, new RightFrag(), "right"); 
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);//设置动画 
transaction.addToBackStack("right"); // 将该fragment加入返回堆 
// 提交事务 
transaction.commit(); 

(5).Fragment状态管理

/* 
 * 管理Fragment的状态 
 * 如果在一个主activityViewGroup中添加一个fragment, 
 * 如果手机屏幕旋转了,当前activity被销毁重建,fragment也被activityManager创建 
 * 故在onCreate中,需要判断一下 
 */ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 setContentView(R.layout.activity_main); 
 manager = getFragmentManager(); 
 if (manager.findFragmentByTag("right") == null) { 
  // if(savedInstanceState == null)也可判断该fragment是否已经加载 
 
  manager.beginTransaction() 
   .replace(R.id.right, new RightFrag(), "right") 
   .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)// 设置动画 
   .addToBackStack("right") // 将该fragment加入返回堆 
  // 提交事务 
  .commit(); 
 } 
} 


4.Fragment间信息交互