Android零基础入门第81节:Activity数据传递

移动开发 简书

在Android开发中,经常要在Activity之间传递数据。前面也学习了Activity和Intent相关基础,接下来一起来学习Activity的数据传递。

一、简介

通过前面的学习知道,Intent可以用来开启Activity,同样它也可以用来在Activity之间传递数据。Intent提供了多个重载的方法来携带额外的数据,如下所示。

putExtra(String name, xxx value):向 Intent 中按 key-value 对的形式存入数据。

getXxxExtra(String name):从Intent中按key取出指定类型的数据。

putExtras(Bundle data):向Intent中放入需要携带的数据包。

Bundle getExtras():取出Intent中所携带的数据包。

使用Intent传递数据只需调用putExtra()方法将想要存储的数据存在Intent中即可。当启动了另一个Activity后,再把这些数据从Intent中取出即可。其核心示例代码如下:

// 从MainActivity传递数据到SecondActivity

Intentintent=newIntent(MainActivity.this,SecondActivity.class);

Stringname=”admin “;

intent.putExtra(“extra_data_name”,name);

startActivity(intent);

// 取出MainActivity传递过来的数据

Intentintent=getIntent();

Stringname=intent.getStringExtra(“extra_data_name”);

还有另外一种方式,就是传递Bundle对象。Bundle对象包含了多个方法来存入数据和取出数据,如下所示。

putXxx(String key , Xxx data):向 Bundle 中放入 int、long 等各种类型的数据。

putSerializable(String key,Serializable data):向 Bundle 中放入一个可序列化的对象。

getXxx(String key):从Bundle中取出int、long等各种类型的数据。

getSerializable(String key, Serializable data):从 Bundle 中取出一个可序列化的对象。

使用Bundle对象传递数据的核心代码如下:

// 从MainActivity传递数据到SecondActivity

Bundlebundle=newBundle();

bundle.putString(“name”,”Linda “);

bundle.putInt(“age”,20);

Intentintent=newIntent(MainActivity.this,SecondActivity.class);

intent.putExtras(bundle);

startActivity(intent);

// 取出MainActivity传递过来的数据

Intentintent=getIntent();

Bundlebundle=intent.getExtras();

StringstuName=bundle.getString(“name”);

intstuAge=bundle.getString(“age”);

在上述代码中,在接收Bundle对象封装的数据时,需要先创建对应的Bundle对象,然后再根据存入的key值取出value。其实用Intent传递数据以及对象时,它的内部也是调用了Bundle对象相应的put()方法,也就是说Intent内部也是用Bundle来实现数据传递的,只是封装了一层而已。

二、示例

接下来通过一个示例来学习两个Activity之间如何通过Bundle交换数据。

创建一个示例程序,非常简单,一共有两个界面,其中第一个界面有用户名、密码和性别等信息,然后有一个注册按钮,第二个界面包含多个文本框。让用户将信息填写完整后点击注册,将所有信息传入到第二个页面去模拟注册,这里就简单显示出来即可。

第一个Activity对应的布局文件(activity_main)的代码如下所示:

在上述代码中,定义了一个相对布局RelativeLayout,该布局中创建了一个EditText和一个Button按钮,分别用于输入内容和单击“注册”按钮进行数据传递。

接下来创建一个用于数据接收的界面activity_second.xml,该界面的布局比较简单,只添加了三个TextView用来展示用户信息,因此不展示界面效果。activity_second.xml界面代码如下所示:

当界面创建好之后,需要在MainActivity中编写与页面交互的代码,用于实现数据传递具体代码如下所示:

在上述代码中,register()方法实现了获取用户输入数据,并且将Intent作为载体进行数据传递。接下来再创建一个SecondActivity,用于接收数据并展示,具体代码如下所示:

在上述代码中,通过getIntent()方法获取到Intent对象,然后通过该对象的getStringExtra()方法获取输人的用户名,并将得到的用户名绑定在TextView控件中进行显示。需要注意的是,getStringExtra(String str)方法传人的参数必须是MainActivity中intent.putExtra()方法中传人的key,否则会返回null。

接下来在清单文件中,配置Activity,具体代码如下所示:

需要注意的是,android:label属性是用来指定显示在标题栏上的名称的,如桌Activity设置了该属性,则跳到该Activity页面时标题栏会显示在Activity中配置的名称,否则显示在Application中配置的名称。

运行程序,在MainActivity的文本框中输入对应信息,可以看到左图所示效果。单击“注册”按钮,此时会跳转到SecondActivity界面,显示输人的信息,如右图所示。

从上图中可以看出,MainActivity中输入的数据username成功地传递给SecondActivity,这就是使用Intent进行不同界面传递数据的用法。

本节学习了将简单的数据从MainActivity传递到SecondActivity,下期学习数据如何从SecondActivity回传到MainActivity。

今天就先到这里,如果有问题欢迎留言一起探讨,也欢迎加入Android零基础入门技术讨论微信群,共同成长!

如果该系列分享对你有帮助,就动动手指关注、点赞、留言吧,你的互动就是对我最大的鼓励!

此文章版权为微信公众号分享达人秀(ShareExpert)——鑫鱻所有,若需转载请联系作者授权,特此声明!

往期总结回顾:

Android零基础入门第1节: Android的前世今生

Android零基础入门第2节: Android 系统架构和应用组件那些事

Android零基础入门第3节: 带你一起来聊一聊Android开发环境

Android零基础入门第4节: 正确安装和配置JDK, 高富帅养成第一招

Android零基础入门第5节: 善用ADT Bundle, 轻松邂逅女神

Android零基础入门第6节: 配置优化SDK Manager, 正式约会女神

Android零基础入门第7节: 搞定Android模拟器,开启甜蜜之旅

Android零基础入门第8节: HelloWorld,我的第一趟旅程出发点

Android零基础入门第9节: Android应用实战,不懂代码也可以开发

Android零基础入门第10节: 开发IDE大升级,终于迎来了Android Studio

Android零基础入门第11节: 简单几步带你飞,运行Android Studio工程

Android零基础入门第12节: 熟悉Android Studio界面,开始装逼卖萌

Android零基础入门第13节: Android Studio个性化配置,打造开发利器

Android零基础入门第14节: 使用高速Genymotion,跨入火箭时代

Android零基础入门第15节: 掌握Android Studio项目结构,扬帆起航

Android零基础入门第16节: Android用户界面开发概述

Android零基础入门第17节: 文本框TextView

Android零基础入门第18节: 输入框EditText

Android零基础入门第19节: 按钮Button

Android零基础入门第20节: 复选框CheckBox和单选按钮RadioButton

Android零基础入门第21节: 开关组件ToggleButton和Switch

Android零基础入门第22节: 图像视图ImageView

Android零基础入门第23节: 图像按钮ImageButton和缩放按钮ZoomButton

Android零基础入门第24节: 自定义View简单使用,打造属于你的控件

Android零基础入门第25节: 简单且最常用的LinearLayout线性布局

Android零基础入门第26节: 两种对齐方式,layout_gravity和gravity大不同

Android零基础入门第27节: 正确使用padding和margin

Android零基础入门第28节: 轻松掌握RelativeLayout相对布局

Android零基础入门第29节: 善用TableLayout表格布局

Android零基础入门第30节: 两分钟掌握FrameLayout帧布局

Android零基础入门第31节: 少用的AbsoluteLayout绝对布局

Android零基础入门第32节: 新推出的GridLayout网格布局

Android零基础入门第33节: Android事件处理概述

Android零基础入门第34节: Android中基于监听的事件处理

Android零基础入门第35节: Android中基于回调的事件处理

Android零基础入门第36节: Android系统事件的处理

Android零基础入门第37节: 初识ListView

Android零基础入门第38节: 初识Adapter

Android零基础入门第39节: ListActivity和自定义列表项

Android零基础入门第40节: 自定义ArrayAdapter

Android零基础入门第41节: 使用SimpleAdapter

Android零基础入门第42节: 自定义BaseAdapter

Android零基础入门第43节: ListView优化和列表首尾使用

Android零基础入门第44节: ListView数据动态更新

Android零基础入门第45节: 网格视图GridView

Android零基础入门第46节: 列表选项框Spinner

Android零基础入门第47节: 自动完成文本框AutoCompleteTextView

Android零基础入门第48节: 可折叠列表ExpandableListView

Android零基础入门第49节: AdapterViewFlipper图片轮播

Android零基础入门第50节: StackView卡片堆叠

Android零基础入门第51节: 进度条ProgressBar

Android零基础入门第52节: 自定义ProgressBar炫酷进度条

Android零基础入门第53节: 拖动条SeekBar和星级评分条RatingBar

Android零基础入门第54节: 视图切换组件ViewSwitcher

Android零基础入门第55节: ImageSwitcher和TextSwitcher

Android零基础入门第56节: 翻转视图ViewFlipper

Android零基础入门第57节: DatePicker和TimePicker选择器

Android零基础入门第58节: 数值选择器NumberPicker

Android零基础入门第59节: 常用三大Clock时钟组件

Android零基础入门第60节: 日历视图CalendarView和定时器Chronometer

Android零基础入门第61节: 滚动视图ScrollView

Android零基础入门第62节: 搜索框组件SearchView

Android零基础入门第63节: 值得借鉴学习的选项卡TabHost

Android零基础入门第64节: 揭开RecyclerView庐山真面目

Android零基础入门第65节: RecyclerView分割线开发技巧

Android零基础入门第66节: RecyclerView点击事件处理

Android零基础入门第67节: RecyclerView数据动态更新

Android零基础入门第68节: RecyclerView添加首尾视图

Android零基础入门第69节: ViewPager快速实现引导页

Android零基础入门第70节: ViewPager打造TabHost效果

Android零基础入门第71节: CardView简单实现卡片式布局

Android零基础入门第72节: SwipeRefreshLayout下拉刷新

Android零基础入门第73节: Activity创建和配置

Android零基础入门第74节: Activity启动和关闭

Android零基础入门第75节: Activity状态和生命周期

Android零基础入门第76节: Activity数据保存和横竖屏切换

Android零基础入门第77节: Activity任务栈和启动模式

Android零基础入门第78节: 四大组件的纽带——Intent

Android零基础入门第79节: Intent 属性详解(上)

Android零基础入门第80节: Intent 属性详解(下)

简书稿源:简书 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 移动开发 » Android零基础入门第81节:Activity数据传递

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录