【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 ...
随机推荐
- TArray<uint8>转FString
void ARamaUDPReceiver::Recv(const FArrayReaderPtr& ArrayReaderPtr, const FIPv4Endpoint& EndP ...
- kotlin正式由Goole公布为Android的最新开发语言
那么,现在大家开发Android的话一般来说都是直接用Java,这个没错吧(高手除外).嗯,那么用力那么久的Java,不知道大家是否有想过Java的不足,已经很多可以优化的地方呢.当然,新修订的版本中 ...
- Android无线测试之—UiAutomator UiWatcher API介绍一
UiWatcher类介绍与中断监听检查条件 一.UiWatcher类说明 1.Uiwatcher用于处理脚本执行过程中遇到非预想的步骤 2.UiWatcher使用场景 1)测试过程中来了一个电话 2) ...
- 如何使用phpmyadmin建立外键约束
之前都是用sql语句进行的主外键的关联,现在用可视化的phpmyadmin感觉方便了很多,但是在做主外键约束的时候却十中找不到操作在哪里.网上搜索的也是千奇百怪五花八门的,都说的很晦涩,很多都说需要使 ...
- SaltStack自动化安装zabbix-server
使用SaltStack自动化安装zabbix-server 1,设置ntp时间同步 2,安装zabbix-agent 3,安装zabbix-server 4,安装及配置mariadb(mariadb与 ...
- Android ImageView 获取图片信息后进行比较
ImageView a=(ImageView)findViewById(R.id.imageView2); //获取当前图片ConstantState类对象 Drawable.ConstantStat ...
- qt model view 编程总结
看不见的root的 QModelIndex() 是 无效的 list 和table 的index 函数中的parent参数就只要 root QModelIndex 就可以,因为没有层级概念 Model ...
- Put queue for MemoryTransaction of capacity 10000 full, consider committing more frequently, increasing capacity or increasing thread count flume capacity 时间数
package com.test; import org.apache.http.*;import org.apache.http.entity.ContentType;import org.apac ...
- Macbook pro 13" Installs Ubuntu 18.04
最新版的 MacBook对Ubuntu的支持(或者反过来?)不是很好,但是除了Suspend和resume功能没找到方法使用外,其他都还好,可用. 1.mac在OSX中先安装refind引导,如果开启 ...
- golang的指针和切片
首先为什么要讲go的指针和切片放在一起? 因为go指针和切片都是引用类型 引用类型就是说切片和指针保存的只是内存的地址,而不是具体的值,效率在大数据读取方面效率会高很多. 1.怎么定义一个切片 方法1 ...