Android 五种方法传参

发布时间 2023-06-29 15:23:06作者: 邢帅杰
1.Intent对象携带简单数据
利用Intent的Extra部分来存储我们想要传递的数据,可以传送int, long, char等一些基础类型,对复杂的对象就无能为力了。
//传递些简单的参数
Intent intentSimple = new Intent();
intentSimple.setClass(MainActivity.this,SimpleActivity.class);
Bundle bundleSimple = new Bundle();
bundleSimple.putString("usr", "xcl");
bundleSimple.putString("pwd", "zj");
intentSimple.putExtras(bundleSimple);
startActivity(intentSimple);

接收参数
Bundle bunde = this.getIntent().getExtras();
String eml = bunde.getString("usr");
String pwd = bunde.getString("pwd");

2. 利用Intent对象携带如ArrayList之类复杂些的数据
这种原理是和上面一种是一样的,只是要注意下。 在传参数前,要用新增加一个List将对象包起来。
设置参数
//传递复杂些的参数
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("key1", "value1");
map1.put("key2", "value2");
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
list.add(map1);

Intent intent = new Intent();
intent.setClass(MainActivity.this,ComplexActivity.class);
Bundle bundle = new Bundle();
//须定义一个list用于在budnle中传递需要传递的ArrayList<Object>,这个是必须要的
ArrayList bundlelist = new ArrayList();
bundlelist.add(list);
bundle.putParcelableArrayList("list",bundlelist);
intent.putExtras(bundle);
startActivity(intent);

//接收参数
Bundle bundle = getIntent().getExtras();
ArrayList list = bundle.getParcelableArrayList("list");
//从List中将参数转回 List<Map<String, Object>>
List<Map<String, Object>> lists = (List<Map<String, Object>>)list.get(0);
String sResult = "";
for (Map<String, Object> m : lists){
  for (String k : m.keySet()){
    sResult += "\r\n"+k + " : " + m.get(k);
  }
}