Android基础之intent传值的三种方法
来源:互联网 发布:域名重定向设置 编辑:程序博客网 时间:2024/06/06 02:00
0 概述:Android之intent传值的三种方法
0.1 startActivity();
0.2 startActivityForResult();
0.3 调用在下个activity自定义的方法”actionStart()”,也就是最佳的方法。
1 最常用传值跳转:startActivity()方法
1.1 MainActivity
/* 在MainActivity中定义如下代码 */button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this,TwoActivity.class); //在Intent对象当中添加一个键值对 intent.putExtra("key","value"); startActivity(intent); }});
1.2 TwoActivity
/* 在TwoActivity中定义如下代码 */public class TwoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //取得从上一个Activity当中传递过来的Intent对象 Intent intent = getIntent(); //从Intent当中根据key取得value if (intent != null) { String value = intent.getStringExtra("key"); } } }); }}
2 回调数据式传值跳转:startActivityForResult()方法
2.1 MainActivity
button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this,TwoActivity.class); intent.putExtra("key", "value"); // 第二个参数是请求码,只要是一个唯一值 startActivityForResult(intent, 1234); }}); // 由于我们是使用startActivityForResult()方法来启动TwoActivity的,在TwoActivity被销毁之后会回调上一个活动的onActivityResult()方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { switch (requestCode) { case 1234: if (resultCode == RESULT_OK) { //接收对象 //Bundle bundle = data.getExtras(); //AddressBean addressBean = (AddressBean) bundle.getSerializable(Constant.ADDRESSBEAN); String returnedData = intent.getStringExtra("key1"); } break; default: } }
2.2 TwoActivity
public class TwoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //接收从MainaActivity传递的数据 Intent intent = getIntent(); if (intent != null) { String value = intent.getStringExtra("key"); } button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //传递对象 //Intent intent = new Intent(); //Bundle bundle = new Bundle(); //bundle.putSerializable(Constant.ADDRESSBEAN, addressArray.get(position)); //intent.putExtras(bundle); //setResult(RESULT_OK, intent); //finish(); Intent intent = new Intent(); intent.putExtra("key1","value two activity"); // 专门用于向上一个活动返回数据。第一个参数用于向上一个活动返回结果码,一般只使用RESULT_OK或RESULT_CANCELED这两个值 setResult(RESULT_OK, intent); finish(); } }); }}
3 启动活动的最佳写法
3.0 问题描述
在真正的项目开发中经常会有对接的问题出现。如:TwoActivity并不是由你开发的,但现在你负责的部分需要有启动TwoActivity这个功能,而你却不清楚启动这个活动需要传递哪些数据。
3.1 MainActivity
button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /*最佳数据传值方法:调用在下个activity自定义的方法*/ TwoActivity.actionStart(MainActivity.this, "data1", "data2"); }});
3.2 TwoActivity
public class TwoActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } /*最佳数据传值方法*/ public static void actionStart(Context context, String data1, String data2) { Intent intent = new Intent(context, TwoActivity.class); intent.putExtra("param1", data1); intent.putExtra("param2", data2); context.startActivity(intent); }}
3.3 结论
实现后,所有TwoActivity中需要的数据都是通过actionStart()方法的参数传递过来的,然后把它们存储到Intent中,最后调用startActivity()方法启动TwoActivity。
1 0
- Android基础之intent传值的三种方法
- Android之intent传值的三种方法
- Android之intent传值的三种方法
- Android之intent传值的三种方法
- Android基础之Intent的几种常用方法
- Android基础学习之Intent常用方法
- Android基础之Intent传递二进制数值的两种方法
- Android -- Intent传递对象的三种方法
- Android -- Intent传递对象的三种方法
- Android基础之Intent
- Android基础之Intent的flag
- Android基础之两个Intent之间相互传值
- Android系列之Intent传递对象的两种方法
- Intent传值的三种方式
- Android基础之Intent和Intent Filter
- Android基础之Intent 和 Intent 过滤器
- Android intent 传值方法
- Android基础学习之Intent
- 深入浅出Mybatis-与Spring集成
- ios 为图片加上水印详解
- 字符串的比较
- 基本排序方法之五——简单选择排序
- CSS基础-21CSS定位-浮动的应用,实现瀑布流布局
- Android基础之intent传值的三种方法
- CodeForces_435B_C
- 内存映射
- Leetcode|Find Minimum in Rotated Sorted Array[二分查找]
- PES分组字段
- Palindrome Number
- 10.通知(NSNotification)
- ACdream1084
- UVA 11205 The broken pedometer ------二进制枚举