android fragement之间互相传递参数

在Activity中加载Fragment的时候、有时候要使用多个Fragment切换、并传值到另外一个Fragment、也就是说两个Fragment之间进行参数的传递、查了很多资料、找到两种方法、一种是通过共同的Activity传递、这种方法是在Activity里面添加一个字段、来临时保存要一些值。

其实我开始想的是用SharedPreferences,不过想想太麻烦!

然后翻了一下Fragment的API、找到了另外一个方法来传递、就像Activity一样便捷的实现参数传递程序中的一段代码、是通过Bundle来传递的、相比之下第一种方法要简单一点

FRAGMENT参数传递方法一

在Activity中定义一个字段、然后添加set和get方法、代码如下、mTitle就是要传递的参数、如果是传递对象、可以把mTitle换成一个对象即可

public class DemoActivity {

	private String mTitle;

	public String getmTitle() {
		return mTitle;
	}

	public void setmTitle(String title) {
		this.mTitle = title;
	}

}

Fragment调用方法、需要注意的是在设值的时候要进行强转一下

((DemoActivity)getActivity()).getmTitle();

FRAGMENT参数传递方法二

可以使用bundle进行参数传递、这样在两个Fragment跳转的时候就可以带上参数了、同样也可以传递一个复杂的对象

ft.hide(getActivity().getSupportFragmentManager().findFragmentByTag(""));
	DemoFragment demoFragment = new DemoFragment();
	Bundle bundle = new Bundle();
	bundle.putString("key", "这是方法二");
	demoFragment.setArguments(bundle);
	ft.add(R.id.fragmentRoot, demoFragment, SEARCHPROJECT);
	ft.commit();  

在另外一个Fragment获取参数的方式只需要一个语句、key是自己定义的一个标识、参数的形式只要bundle能传递都可以实现

String string = getArguments().getString("key");  

总结

从上面两种方法看来、方法一要简单一些、但个人觉得有点投机取巧、不过也很合Java的开发规范、如果是同一个Activity中要加载很多Fragment的话、这种方法无疑要简单很多

而方法二是使用了Android的Bundle传递的、这种方法应该更官方一点吧、不过在项目开发中、怎么实现简单就怎么来、也没太多关系

有任何疑问或要获取更多代码、可以在下面进行评论哈

时间: 2024-10-13 02:09:03

android fragement之间互相传递参数的相关文章

Android activity之间数据传递和共享的方式之Application

1.基于消息的通信机制  Intent ---bundle ,extra 数据类型有限,比如遇到不可序列化的数据Bitmap,InputStream,或者LinkedList链表等等数据类型就不太好用. 2.利用static静态数据, public static成员变量: 3.基于外部存储的传输,File/Preference/Sqlite 如果要针对第三方应用需要Content Provider 4.基于IPC的通信机制 context 与Service之间的传输,如Activity与Serv

android Activity之间数据传递 Parcelable和Serializable接口的使用

Activity之间传数据时,为了避免麻烦,往往会将一些值封装成对象,然后将整个对象传递过去.传对象的时候有两种情况,一种是实现Parcelable接口,一种是实现Serializable接口.0.解释两种接口:1)实现Serializable接口是JavaSE本身就支持的.2)Parcelable是Android特有的功能,效率比实现Serializable接口高,像用于Intent数据传递也都支持,而且还可以用在进程间通信(IPC),除了基本类型外,只有实现了Parcelable接口的类才能

Android Handler之Message传递参数

最近发现Message,发送消息可以传递参数,这个思路很好,所以写了一个例子,点击屏幕,给Activity发送一个消息,传递两个参数,并把这个activity销毁掉! 程序打开界面: 点击屏幕,销毁activity弹出Toast: MainActivity: package com.cn.Android; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android

转载如何实现portlet之间的传递参数

Liferay 6开发学习(三十):跨页面Portlet之间的调用与数据传递 2014年10月09日 Liferay 评论 2 条 阅读 4,209 views 次 Portlet之间的通信方法有多种,比如PortletSession,Public Render Parameter,Portlet event等.但是这些方法使用起来都很复杂,像Public Render Parameter和event等,在跨页上就力所不及. 在很多时候我们要想实现Portlet之间的参数传递和数据共享,我最常用

Vue:不同页面之间的传递参数--params

在嵌套vue-router情况下,不同页面之间传递参数可以通过params实现.而params传参分为两种情况: 1.参数在url中显示 首先你要确定自己要传的参数,并在控制路由的文件中的Router中path内添加对应的字段如: { path:'/paramsUrl/:name/:age/:sex', component:paramsUrl} 我要传的参数是姓名,年龄以及性别. 在你要跳转的组件内定义参数,如: stu:{name:'Tom',age:18,sex:'male'} 同时在HTM

Android - fragment之间数据传递

<Fragment跳转时传递参数及结果回传的方法> <Fragment详解之五——Fragment间参数传递> <Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数> <详解Dialog(三)——自定义对话框视图及参数传递> 原文地址:https://www.cnblogs.com/qlky/p/10630107.html

Android开发之Fragment传递参数的几种方法

Fragment在Android3.0开始提供,并且在兼容包中也提供了Fragment特性的支持.Fragment的推出让我们编写和管理用户界面更快捷更方便了. 但当我们实例化自定义Fragment时,为什么官方推荐Fragment.setArguments(Bundle bundle)这种方式来传递参数,而不推荐通过构造方法直接来传递参数呢?为了弄清这个问题,我们可以做一个测试,分别测试下这两种方式的不同 首先,我们来测试下通过构造方法传递参数的情况 public class FramentT

Android/iOS访问wcf传递参数为实体对象的问题

简单记录一下使用实体对象作为参数的传递! 在服务端使用webservice时是没有问题的,但是当替换成wcf时就出现传递的参数无法序列化的问题! 服务端代码: Service1.svc namespace WcfTeacherService { // 注意: 使用"重构"菜单上的"重命名"命令,可以同时更改代码.svc 和配置文件中的类名"Service1". // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择

PB窗体之间进行传递参数

例:A窗口传递给B窗口y A窗口: 定义参数名称并赋值String s_parm  s_parm=username+'%'+password,然后openwithparm(w_main,s_parm),w_main为跳转到的窗口,s_parm为我们传递过来的参数. B窗口: 定义变量String s_username,s_password,s_parm进行接收, s_parm=message.stringparm i_pos=pos(s_parm,'%') s_username=left(s_p