欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 两个Fragment之间传递数据实例详解

程序员文章站 2024-02-23 20:36:04
 android 两个fragment之间如何传递数据 fragmenta启动fragmentb,做一些选择操作后,返回fragmenta,需要把fragmen...

 android 两个fragment之间如何传递数据

fragmenta启动fragmentb,做一些选择操作后,返回fragmenta,需要把fragmentb里面选择的数据传回来。有什么办法?

fragment之间不能直接通信,必须通过activity来完成,具体步骤。

1. 在fragmenta中定义通信接口,通过该接口向activity发送数据。

public class fragmenta extends fragment {
  private onbuttonpresslistener mlistener;

  @override
  public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {
    view view = inflater.inflate(r.layout.fragment_linmo_select_beitie, container, false);
    listview.setonitemclicklistener(new adapterview.onitemclicklistener() {
      @override
      public void onitemclick(adapterview<?> parent, view view, int position, long id) {
        mlistener.onokbuttonpressed(selectedbeitie);
      }
    });

    return view;
  }

  @override
  public void onattach(activity activity) {
    super.onattach(activity);
    try {
      mlistener = (onbuttonpresslistener) activity;
    } catch (classcastexception e) {
      throw new classcastexception(activity.tostring() + " must implement onokbuttonpressed");
    }
  }

  public interface onbuttonpresslistener {
    void onokbuttonpressed(linmobeitieitem item);
  }
}

2. 在activity中实现该接口,并通过该接口向fragmentb传递数据。

public class mainactivity extends activity implements fragmenta.onbuttonpresslistener {
  @override
  public void onokbuttonpressed(linmobeitieitem item) {
    fragmentb fragmentb = (fragmentb)getfragmentmanager().findfragmentbyid(r.id.container);
    fragmentb.onbeitieselected(item);
  }
}

3. fragmentb接收到数据并处理。

public class fragmenta extends fragment {
  public void onbeitieselected(linmobeitieitem item) {
    // ...
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!