【Android基础】页面跳转与传值(Activity跳转与传值)
一个Android应用程序很少会只有一个Activity对象,如何在多个Activity之间进行跳转,而且能够互相传值是一个很基本的要求。
本次我们就讲一下,Android中页面跳转以及传值的几种方式!
Activity跳转与传值,主要是通过Intent类来连接多个Activity,通过Bundle类来传递数据。
最常见最一般的页面跳转代码,很简单,如下:
- Intent intent = new Intent(A.this, B.class);
- startActivity(intent);
也可以这样写:
- Intent intent = new Intent();
- intent.setClass(A.this, B.class);
- startActivity(intent);
只要这两句,就可以实现从A页面跳转到B页面了。 (A、B均继承自Activity)
有的时候,在跳转页面时还需要传递数据,这个时候如何做呢?
如果数据比较少,比如只要传一个名字,那么只要j加一句"intent.putExtra("Name", "feng88724");"即可,代码如下:
- Intent intent = new Intent();
- intent.setClass(A.this, B.class);
- intent.putExtra("Name", "feng88724");
- startActivity(intent);
如果数据比较多,就需要使用 Bundle类了,代码如下: (说明直接看注释)
- Intent intent = new Intent(A.this, B.class);
- /* 通过Bundle对象存储需要传递的数据 */
- Bundle bundle = new Bundle();
- /*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/
- bundle.putString("Name", "feng88724");
- bundle.putBoolean("Ismale", true);
- /*把bundle对象assign给Intent*/
- intent.putExtras(bundle);
- startActivity(intent);
以上我们讲的都是如何进行页面跳转及数据传递,那么在另一个页面B上,应该如何接收数据呢?
在A页面上是以Bundle封装了对象,自然在B页面也是以Bundle的方式来解开封装的数据。主要通过"getIntent().getExtras()"方法来获取Bundle,然后再从Bundle中获取数据。 也可以通过" this.getIntent().getStringExtra("Name");"方法直接从Intent中获取数据。
从Bundle获取数据的代码:
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- /*加载页面*/
- setContentView(R.layout.main);
- /*获取Intent中的Bundle对象*/
- Bundle bundle = this.getIntent().getExtras();
- /*获取Bundle中的数据,注意类型和key*/
- String name = bundle.getString("Name");
- boolean ismale = bundle.getBoolean("Ismale");
- }
有时,在页面跳转之后,需要返回到之前的页面,同时要保留用户之前输入的信息,这个时候该怎么办呢?
在页面跳转后,前一个Activity已经被destroy了。如果要返回并显示数据,就必须将前一个Activity再次唤醒,同时调用某个方法来获取并显示数据。
要实现这个效果,需要做以下几步:
1. 首先,从A页面跳转到B页面时,不可以使用"startActivity()"方法,而要使用"startActivityForResult"方法。
2. 在A页面的Activity中,需要重写"onActivityResult"方法
- @Override
- protected void onActivityResult(int requestCode,int resultCode,Intent data){
- switch(requestCode){
- case RESULT_OK:
- /*取得来自B页面的数据,并显示到画面*/
- Bundle bundle = data.getExtras();
- /*获取Bundle中的数据,注意类型和key*/
- String name = bundle.getString("Name");
- boolean ismale = bundle.getBoolean("Ismale");
- }
- }
3. 在B页面上加一个返回按钮,并在事件写如下代码:
- /*给上一个Activity返回结果*/
- B.this.setResult(RESULT_OK,intent);
- /*结束本Activity*/
- B.this.finish();
本讲就这么多
转载于:https://www.cnblogs.com/martinjinyu/articles/3901634.html
【Android基础】页面跳转与传值(Activity跳转与传值)相关推荐
- Android基础新手教程——4.1.3 Activity登堂入室
Android基础新手教程--4.1.3 Activity登堂入室 标签(空格分隔): Android基础新手教程 本节引言: 好的,在学习了两节的Activity后相信大家已经知道怎样去使用Acti ...
- Android基础再回首——四大组件之Activity、Service俩兄弟
Android基础再回首--四大组件之Activity.Service俩兄弟 偶尔的回首过去,总是有不一样的收获.今天就来回顾下Activity和service吧,不用嫌弃太基础了,打好基础是取得成功 ...
- android activity的跳转动画,实现activity跳转动画的若干种方式
第一种: (使用overridePendingTransition方法实现Activity跳转动画) 在Activity中代码如下 /** * 点击按钮实现跳转逻辑 */ button1.setOnC ...
- Android跳转动画时长,Android_Activit跳转动画之界面上某个位置并裂开上下拉伸动画跳转,需求:Activity(fragment)跳转的时候 - phpStudy...
Activit跳转动画之界面上某个位置并裂开上下拉伸动画跳转 需求:Activity(fragment)跳转的时候当前界面裂开,上下各自拉出手机屏幕,之后跳转到相对应的Activity.整体效果图如下 ...
- 最新Android基础入门教程目录(完结版)
第一章:环境搭建与开发相关(已完结 10/10) https://blog.csdn.net/coder_pig/article/details/50000773 Android基础入门教程--1.1 ...
- 跳转dialog主题activity 界面屏幕抖动解决
最近首页有个复杂的dialog 页面,自己用的activity跳转,将主题设置为dialog, 发现进入界面的时候屏幕 有时候会闪屏,上下抖动,而有时候没问题,尝试解决,最后我在跳转后的activit ...
- 2015年最新Android基础入门教程目录(完结版)
2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全 ...
- Activity系列--Activity跳转
app之内或者app之间的Activity之间是可以进行跳转的,比如短信app,从短信列表Activity跳入查看短信详情Activity. 那这节就来介绍Activity的跳转相关的知识. 需要先了 ...
- Android -- 基础篇 -- Activity跳转动画的五种方式(下)
上一篇文章中我们讲解了在Activity启动过程中获取组件宽高的五种方式.在Activity的启动过程中如果我们直接在生命周期方法中通过view.getWidth()或者是view.getHeight ...
最新文章
- 异常处理机制(Begin try Begin Catch)
- 史上最全数据结构算法之递归系列学习,建议收藏!
- 时间序列(二)数据重采样
- 如何理解Return的返回值?
- kafka滞销瓶颈解决方案
- 半导体制冷器性能计算
- Spring CGLlB动态代理
- 网络无人值守安装linux----kickstart
- java struts2下载文件_java struts2入门学习---文件下载的二种方式
- memory java heap_java.lang.OutOfMemoryError: Java heap space解决方法
- LeetCode 647. Palindromic Substrings
- VAssistX失效后重新安装双击没反应
- python图像物体的自动标注_python中matplotlib实现随鼠标滑动自动标注代码实例
- ul li img标签 图片不显示的问题
- 美通企业日报 | 信达生物与礼来制药达成战略合作;希尔顿旗下康莱德酒店亮相天津...
- 前端程序员拿到新电脑第一天,该做些什么?
- 开源ETL工具kettle系列
- Oracle-存储过程(procedure、function、package、tigger)
- Nginx学习实践总结
- UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xbd in position 5: illegal multibyte sequence
热门文章
- linux创建管道的函数,Linux下的有名管道(03)---使用函数创建和删除有名管道
- hbase 客户端_读《HBase权威指南》 客户端API:基础知识
- cookie代码加时间多久出现一次_一文彻底搞懂Cookie、Session、Token到底是什么
- python列表大于60_Python使用filter如何对给定列表中的数字进行过滤,保留大于等于60的数字?...
- dockerfile arg_解读三组容易混淆的 Dockerfile 指令
- 接口规范 7. 按需录制相关接口
- mysql update修改数据_MYsql如何用update语句修改数据,值得一看
- Java中JTextField.getText() 和 JPassword.getPassword() 的区别
- 毕设日志——Linux软连接的建立与删除
- PHP学习8——图像处理