【android】activity、fragment传值例子
1:Activity篇
1.1向Activity传值
关键点在于putExtra。如果传递类的话,记得类实现Serializable接口
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("param1", "data1");
intent.putExtra("param2", "data2");
startActivity(intent);
如果参数比较固定的话,我们可以考虑把传递参数写成一个静态方法,比如查看用户详情,参数固定就是用户实体。可以这样写
private static final String PARAM_CONTACT_ENTITY = "zhexian.app.smartcall.contact.PARAM_CONTACT_ENTITY"; public static void actionStart(Context context, ContactEntity entity) {
Intent intent = new Intent(context, ContactDetailActivity.class);
intent.putExtra(PARAM_CONTACT_ENTITY, entity);
context.startActivity(intent);
}
1.2 Activity获取参数
在SecondActivity,我们可以通过下面的代码,获取我们传递的用户实体参数。
getIntent().getSerializableExtra(PARAM_CONTACT_ENTITY);
2:Fragment篇
将Fragment添加到Activity上,目前常用的的有两种方式
1:直接把fragment标签写在布局xml上,通过name属性,来指定对应的fragment类。
2:使用FragmentManager动态替换fragment。
第一种方式比较少见,没法在fragment初始化时传递参数。但是我们可以传递给其托管的activity(参考1.1),然后fragment通过getActivity获取赋值好的参数。
第二种方式是比较常见的,也是我们接下来要说的。
2.1:向Fragment传值
这个代码就很简单了,我们通过IDE新建一个fragment的时候,如果勾选了创建静态工厂方法的话,ide会自动帮我们创建好模板,里面就包含了如何向该fragment传值。
比如我们新建了一个叫UserDetailFragment,其静态方法如下
//参数名
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2"; //参数值
private String mParam1;
private String mParam2; public static UserDetailFragment newInstance(String param1, String param2) {
UserDetailFragment fragment = new UserDetailFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
2.2:Fragment获取参数
在onCreate方法里面,如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
tips:如果是类、枚举的话,通过getArguments().getSerializable()获取哦!
【android】activity、fragment传值例子的更多相关文章
- [转]Android:Activity+Fragment及它们之间的数据交换(一)
2014-05-18 来源:Android:Activity+Fragment及它们之间的数据交换(一) 简介: 为什么要用Fragment?使用Fragment可以在一个Acti ...
- Android:Activity+Fragment及它们之间的数据交换.
Android:Activity+Fragment及它们之间的数据交换 关于Fragment与Fragment.Activity通信的四种方式 比较好一点的Activity+Fragment及它们之间 ...
- Android -- Activity,Fragment lifecycle
Activity Lifecyce Fragment Lifecycle: 程序运行: 09-16 13:59:22.883 19022-19022/com.example.android.archi ...
- Android Activity间传值
Android中不同的Activity之间的传值方式(Main为当前Activity,Login为目标Activity) 1.使用Intent Intent intent = new Intent(M ...
- Android笔记: fragment简单例子
MainActivity.java public class MainActivity extends Activity { @Override protected void onCreate(Bun ...
- Android:Activity+Fragment及它们之间的数据交换(一)
简单介绍: 为什么要用Fragment?使用Fragment能够在一个Activity中实现不同的界面. Fragment与Fragment之间的动画切换,远比Activity与Activity之间的 ...
- 【转】Android Activity/Fragment Lifecycle
原文来自:http://stormzhang.github.io/android/2014/08/08/activity-fragment-lifecycle/ 说Activity和Fragment是 ...
- Android activity之间传值关键性代码
从当前activity中获取et 表单中的值,并跳转到myactivity.java所绑定的xml布局文件上. private EditText et; Intent intent=new Inten ...
- activity fragment 传值
Bundle bundle = new Bundle(); bundle.putString("key","value"); fragment.setArgum ...
随机推荐
- jenkins发布docker到mesos
1.前提是装好git.SSH.maven插件 2.jenkins新建一个项目,配好git拉取代码.maven编译构建(gradle构建也行,这不重要) 3.SSH Server,填写需要传输的jar文 ...
- [转]ASP.NET MVC 5 - 视图
在本节中,你要去修改HelloWorldController类,使用视图模板文件,在干净利索地封装的过程中:客户端浏览器生成HTML. 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所 ...
- Ubuntu16.04最快捷搭建小型局域网Git服务器
导读 使用linux操作系统,不得不提Git版本管理器,这个Linus花了两周时间开发的分布式版本管理器(这就是大神,先膜了个拜...),毫无疑问,Git版本管理器与linux系统有着与生俱来的同一血 ...
- java框架---->RxJava的使用(一)
RxJava是响应式程序设计的一种实现.在响应式程序设计中,当数据到达的时候,消费者做出响应.响应式编程可以将事件传递给注册了的observer.今天我们就来学习一下rxJava,并分析一下它源码感受 ...
- 打开wamp中的phpmyadmin出现403的错误
安装完wamp后打开其下的phpMyAdmin也就是路径 http://localhost/phpmyadmin/ 如果端口不是 80 要加下端口,比如我是 8888 ,所以我的地址是:http:// ...
- Java中Integer类的方法和request的setAttribute方法的使用与理解
一.Integer类的使用方法 Interger:整数类型 1.属性. static int MAX_VALUE:返回最大的整型数: static int MIN_VALUE:返回最小的整型数: st ...
- 在VisualStudio 2013下使用VS2012的插件
由于VS2013刚刚推出,而VS的插件又是和版本强相关的,因此VS2013就存在一个插件比较少的问题.虽然2013相对与2012来说改动并不大,应该是拿来重新编译一番就可以使用了.但也得有一个过程,并 ...
- Aggregate (GROUP BY) Function Descriptions
w Table 13.25 Aggregate (GROUP BY) Functions Name Description AVG() Return the average value of the ...
- the ONLY_FULL_GROUP_BY SQL mode is enabled (which it is by default) 用户变量
MySQL :: MySQL 8.0 Reference Manual :: 5.1.11 Server SQL Modes https://dev.mysql.com/doc/refman/8.0/ ...
- 获取当前文件夹以及子文件夹下所有文件C++
void getFiles( string path,vector<string>& files) { //文件句柄 ; //文件信息 struct _finddata_t fil ...