5 第五单元 Fragment进阶
Fragment回退栈的方法
添加到回退
ContentFragment fragment = new ContentFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fl_content,fragment);
ft.addToBackStack();
ft.commit();
Fragment回退栈的方法
FragmentManager fm= getFragmentManager();
int count = fm.getBackStackEntryCount();
for (int i = 0; i < count; ++i) {
fm.popBackStack();
}
Fragment通信
使用Handler方式通信
哪个Fragment需要接收传递的数据就在Fragment里定义共有静态
static String string;
public static Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==101){
string = msg.obj.toString();
}
}
};
另一个调用Handler发送消息
final Message message = new Message();
message.what=101;
message.obj="你好";
Fragment2.handler.sendMessage(message);
接口回调
1.定义接口
public interface CallBackListener {
void setData(String s);
}
2.在一个 Fragment里发送消息
callBackListener.setData("添加数据");
3.在另一个 Fragment里发送消息
public class MyFragment extends Fragment implements CallBackListeners{
...
public void setData(String data) {
Toast.makeText(this,data, Toast.LENGTH_SHORT).show(); }
}
四.多个fragment嵌套
父容器:管理3个fragment.
getSupportFragmentManager() 上下文的方法
btn1----->Fragment1
btn2----->Fragment2
btn3----->Fragment3
Fragment1子容器:管理3个fragment.
getChildFragmentManager() Fragment的方法
btn4---->fragment4
btn5---->fragment5
btn6---->fragment6