Fragment回退栈和传值
回退栈
根据调用的Fragment,添加到回退栈里面一层一层退出。
//获得管理者
FragmentManager manager = getSupportFragmentManager();
//获得事务管理者
FragmentTransaction fragmentTransaction = manager.beginTransaction();
fragmentTransaction1.replace(R.id.framelayout2,myFragment2,"s2");
//添加回退栈
fragmentTransaction1.addToBackStack("s2");
fragmentTransaction1.commit();
Fragment之间的传值
Handle
handle灵活方便
用handle传值,在Fragment和Activity内都要声明。(public)
Activity内发送:
Message message = new Message();
message.what=1;
message.obj="hellow,fragment";
myFragment.handler.sendMessage(message);
Fragment接收:
public Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
String message= (String) msg.obj;
Toast.makeText(MyFragment.this.getContext(), message, Toast.LENGTH_SHORT).show();
break;
}
}
};
接口回调
多个Fragment嵌套
父容器:管理3个fragment.
getSupportFragmentManager() 上下文的方法
btn1----->Fragment1
btn2----->Fragment2
btn3----->Fragment3
Fragment1子容器:管理3个fragment.
getChildFragmentManager() Fragment的方法
btn4---->fragment4
btn5---->fragment5