【android中的传值(5种)】男儿欲遂平生志,五经勤向窗前读。这篇文章主要讲述android中的传值(5种)相关的知识,希望能为你提供帮助。
地址:
https://blog.csdn.net/rely_on_yourself/article/details/81539986
android开发中,在不同模块(如Activity)间经常会有各种各样的数据需要相互传递,我把常用的几种
方法都收集到了一起。它们各有利弊,有各自的应用场景。
我现在把它们集中到一个例子中展示,在例子中每一个按纽代表了一种实现方法。
效果图:
文章图片
Demo地址:https://download.csdn.net/download/rely_on_yourself/10595099
1. 利用Intent对象携带简单数据
利用Intent的Extra部分来存储我们想要传递的数据,可以传送String , int, long, char等一些基础类型,对复杂的对象就无能为力了。
1.1 设置参数
//传递些简单的参数
Intent intent1 = new Intent();
intent1.setClass(MainActivity.this,SimpleActivity.class);
//intent1.putExtra("usr", "lyx");
//intent1.putExtra("pwd", "123456");
//startActivity(intent1);
Bundle bundleSimple = new Bundle();
bundleSimple.putString("usr", "lyx");
bundleSimple.putString("pwd", "123456");
intent1.putExtras(bundleSimple);
startActivity(intent1);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
//接收参数//Intent intent = getIntent();
//String eml = intent.getStringExtra("usr");
//String pwd = intent.getStringExtra("pwd");
Bundle bundle = this.getIntent().getExtras();
String eml = bundle.getString("usr");
String pwd = bundle.getString("pwd");
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
2. 利用Intent对象携带如ArrayList之类复杂些的数据
这种原理是和上面一种是一样的,只是要注意下。 在传参数前,要用新增加一个List将对象包起来。
2.1 设置参数
//传递复杂些的参数
Map<
String, Object>
map = new HashMap<
>
();
map.put("key1", "value1");
map.put("key2", "value2");
List<
Map<
String, Object>
>
list = new ArrayList<
>
();
list.add(map);
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);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
this.setTitle("复杂参数传递例子");
//接收参数
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);
}
}TextViewtv = findViewById(R.id.tv);
tv.setText(sResult);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
推荐阅读
- 安卓 日常问题 工作日志
- 虹软人脸识别 - Android平台调用动态库时的常见错误解析
- Android基于RTMP视频流的人脸识别(下篇)
- android error: cannot use ‘throw’ with exceptions disabled
- android add asset file
- 点点守护为什么建议安卓手机别开root权限()
- (开源)STC89c51基于SP8266制作环境实时检测系统+APP inventor制作手机App实时显示
- uniapp计算属性的使用
- APP上架华为商店获取SHA256证书指纹