最近做Android界面,对所用到的Activity的跳转和传参进行一个总结。

(一)跳转

从一个Activity到另一个Activity的跳转,使用Intent,有两种方法

  • 无返回值的 startActivity(Intent Intent);方法;
  • 有返回值的 startActivityForResult(Intent intent,int requestCode);方法。

1. 无返回值跳转,即从当前界面跳转到下一界面;

/* * 参数分析: *       A.this——当前所在界面的类 *       B.class——要跳转到的界面类 * */Intent intent = new Intent(A.this, B.class);startActivity(intent);

2. 有返回值跳转,即从当前界面跳转到下一界面,再从下一界面跳转回来;

public static final int requestCode = 1;//自定义申请码/* * 参数分析 *       A.this——当前所在界面的类 *       B.class——要跳转到的界面类 * /Intent intent = new Intent(A.this, B.class);/*  * 参数分析 *       requestCode——申请码,用于获得返回值,即由一个画面传数据到多个画面(相同的数据),完成不同的功能,此时的requestCode的可通过判断来获得返回值。 * */startActivityForResult(intent, requestCode );

注意:(1)需要在A类中重写onActivityResult方法。

/* * 获取从Activitya当中回调的消息 * @param requestCode    申请码 * @param resultCode     返回码 * @param data           回调的数据 * */@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    // 在申请码和返回码都符合的时候,接收返回的数据    if(requestCode == A.requestCode && resultCode == B.resultCode) {        // TODO 接收数据data    }}

(2)需要在B类中保存页面A,并在B类结束之前返回A类。

public static final int resultCode = 1;//自定义返回码final Intent intent = getIntent();//在B类中得到原来的activityintent.putExtra("name", "value");//在B类中设置返回值传到A类中B.this.setResult(resultCode, intent);// 跳转回原来的activityB.this.finish();// 一定要结束当前activity

(二)传参

startActivityForResult(intent,requestCode );方法是可以传参的:

(1)传递普通类型参数

A类传递参数:

// A类传递参数到B类public static final int requestCode = 1;//自定义申请码public static final String KEY = "key";Intent intent = new Intent(A.this, B.class);// 传递参数,参数类型可以是八大基本类型、String、八大基本类型的数组intent.putExtra(KEY, "value");startActivityForResult(intent, requestCode );

B类接收参数:(在B类的onCreate()方法中)

// B类接收数据final Intent intent = getIntent();Bundle bundle = intent.getExtras();// 接收参数,参数类型可以是八大基本类型、String、八大基本类型的数组Object a = bundle.getString(A.KEY);
(2)传递List类型参数

A类传递参数:

public static final String KEY = "key";List list = new ArrayList<>();// T必须是实现了Serializable接口的类Intent intent = new Intent(A.this, B.class);intent.putExtra(KEY, (Serializable) list);startActivity(intent);

B类接收参数:(在B类的onCreate()方法中)

final Intent intent = getIntent();List list = (List) intent.getSerializableExtra(A.KEY);
(3)传递Map类型参数

A类传递参数:

public static final String KEY = "object";// SerializableHashMap必须是实现了Serializable接口的类SerializableHashMap myMap = new SerializableHashMap();Intent intent = new Intent(A.this, B.class);myMap.setMap(targetMap);//将hashmap数据添加到封装的myMap中Bundle bundle=new Bundle();bundle.putSerializable(KEY, myMap);intent.putExtras(bundle);startActivity(intent);

B类接收参数:(在B类的onCreate()方法中)

Bundle bundle = getIntent().getExtras();SerializableHashMap serializableHashMap = (SerializableHashMap) bundle.get(A.KEY);targetMap = serializableHashMap.getMap();

更多相关文章

  1. android 界面传值
  2. Android(安卓)camera preview and take picture with V4l2
  3. Android(安卓)下的EXIF
  4. Android类参考---Fragment(八)
  5. Fragment(二)-----分析执行的过程篇
  6. android BatteryManager电池管理
  7. android中menu.add()的使用说明
  8. 2011年沈大海讲师Android的腾讯微博客户端源代码,实现oauth_verif
  9. [置顶] android 实现发送彩信方法 (MMS),非调用系统彩信界面

随机推荐

  1. 9种设计模式在 Spring 中的运用,记住!
  2. 内部开源的未来
  3. 终于和 null say 拜拜了,我超开心
  4. 对不起,这局我要赢!!!
  5. 想要成为一名优秀的Java程序员,你需要这8
  6. 为什么一定要和靠谱的人在一起???
  7. Django 博客单元测试:测试评论应用
  8. 面试被问尾递归优化知道怎么做吗?
  9. 万能码从基本到不断完善(安全扫码专业委员
  10. Element Plus组件-按钮、图标、ColorPick