Fragment高级进阶

mac2025-12-27  7

一.Fragment的回退栈

Fragment2 f2 = new Fragment2(); FragmentManager fm = getSupportFragmentManager(); FragmentTransaction tx = fm.beginTransaction(); tx.replace(R.id.fl, f2); //将当前的事务添加到了回退栈 tx.addToBackStack(null); tx.commit();

二.Fragment之间的传值

方式一.Fragment之间的传值:Handler 1.在一个 Fragment里发送消息

Message message = new Message(); message.arg1 = 1; message.obj = "datas"; Fragment2.handler.sendMessage(message);

2.在另外一个 Fragment里接收消息

public static Handler handler=new Handler(){ public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.arg1==1){ String data= msg.obj.toString(); }

方式二:Fragment之间的传值:接口回调

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(); } }

三.案例实现 在首页选择商品,分别使用Handler和接口把商 品添加到购物车,在购物车Fragment里接受数据 四.多个fragment嵌套

父容器:管理3个fragment. getSupportFragmentManager() 上下文的方法 btn1----->Fragment1 btn2----->Fragment2 btn3----->Fragment3

Fragment1子容器:管理3个fragment. getChildFragmentManager() Fragment的方法 btn4---->fragment4 btn5---->fragment5 btn6---->fragment6

最新回复(0)