两个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 FragmentB extends Fragment { public void onBeitieSelected(LinmoBeitieItem item) { // ... } }
==
作者:zdd
出处:http://www.cnblogs.com/graphics/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2010-01-22 类型转化:float -> DWORD