一个Android应用程序很少会只有一个Activity对象,如何在多个Activity之间进行跳转,而且能够互相传值是一个很基本的要求。

本次我们就讲一下,Android中页面跳转以及传值的几种方式!

Activity跳转与传值,主要是通过Intent类来连接多个Activity,通过Bundle类来传递数据。

最常见最一般的页面跳转代码,很简单,如下:

[java] view plaincopyprint?
  1. Intent intent = new Intent(A.this, B.class);
  2. startActivity(intent);

也可以这样写:

[java] view plaincopyprint?
  1. Intent intent = new Intent();
  2. intent.setClass(A.this, B.class);
  3. startActivity(intent);

只要这两句,就可以实现从A页面跳转到B页面了。  (A、B均继承自Activity)

有的时候,在跳转页面时还需要传递数据,这个时候如何做呢?

如果数据比较少,比如只要传一个名字,那么只要j加一句"intent.putExtra("Name", "feng88724");"即可,代码如下:

[java] view plaincopyprint?
  1. Intent intent = new Intent();
  2. intent.setClass(A.this, B.class);
  3. intent.putExtra("Name", "feng88724");
  4. startActivity(intent);

如果数据比较多,就需要使用 Bundle类了,代码如下: (说明直接看注释)

[java] view plaincopyprint?
  1. Intent intent = new Intent(A.this, B.class);
  2. /* 通过Bundle对象存储需要传递的数据 */
  3. Bundle bundle = new Bundle();
  4. /*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/
  5. bundle.putString("Name", "feng88724");
  6. bundle.putBoolean("Ismale", true);
  7. /*把bundle对象assign给Intent*/
  8. intent.putExtras(bundle);
  9. startActivity(intent);

以上我们讲的都是如何进行页面跳转及数据传递,那么在另一个页面B上,应该如何接收数据呢?

在A页面上是以Bundle封装了对象,自然在B页面也是以Bundle的方式来解开封装的数据。主要通过"getIntent().getExtras()"方法来获取Bundle,然后再从Bundle中获取数据。 也可以通过" this.getIntent().getStringExtra("Name");"方法直接从Intent中获取数据。

从Bundle获取数据的代码:

[java] view plaincopyprint?
  1. @Override
  2. public void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. /*加载页面*/
  5. setContentView(R.layout.main);
  6. /*获取Intent中的Bundle对象*/
  7. Bundle bundle = this.getIntent().getExtras();
  8. /*获取Bundle中的数据,注意类型和key*/
  9. String name = bundle.getString("Name");
  10. boolean ismale = bundle.getBoolean("Ismale");
  11. }

有时,在页面跳转之后,需要返回到之前的页面,同时要保留用户之前输入的信息,这个时候该怎么办呢?

在页面跳转后,前一个Activity已经被destroy了。如果要返回并显示数据,就必须将前一个Activity再次唤醒,同时调用某个方法来获取并显示数据。

要实现这个效果,需要做以下几步:

1. 首先,从A页面跳转到B页面时,不可以使用"startActivity()"方法,而要使用"startActivityForResult"方法。

2. 在A页面的Activity中,需要重写"onActivityResult"方法

[java] view plaincopyprint?
  1. @Override
  2. protected void onActivityResult(int requestCode,int resultCode,Intent data){
  3. switch(requestCode){
  4. case RESULT_OK:
  5. /*取得来自B页面的数据,并显示到画面*/
  6. Bundle bundle = data.getExtras();
  7. /*获取Bundle中的数据,注意类型和key*/
  8. String name = bundle.getString("Name");
  9. boolean ismale = bundle.getBoolean("Ismale");
  10. }
  11. }

3. 在B页面上加一个返回按钮,并在事件写如下代码:

[c-sharp] view plaincopyprint?
  1. /*给上一个Activity返回结果*/
  2. B.this.setResult(RESULT_OK,intent);
  3. /*结束本Activity*/
  4. B.this.finish();

本讲就这么多

转载于:https://www.cnblogs.com/martinjinyu/articles/3901634.html

【Android基础】页面跳转与传值(Activity跳转与传值)相关推荐

  1. Android基础新手教程——4.1.3 Activity登堂入室

    Android基础新手教程--4.1.3 Activity登堂入室 标签(空格分隔): Android基础新手教程 本节引言: 好的,在学习了两节的Activity后相信大家已经知道怎样去使用Acti ...

  2. Android基础再回首——四大组件之Activity、Service俩兄弟

    Android基础再回首--四大组件之Activity.Service俩兄弟 偶尔的回首过去,总是有不一样的收获.今天就来回顾下Activity和service吧,不用嫌弃太基础了,打好基础是取得成功 ...

  3. android activity的跳转动画,实现activity跳转动画的若干种方式

    第一种: (使用overridePendingTransition方法实现Activity跳转动画) 在Activity中代码如下 /** * 点击按钮实现跳转逻辑 */ button1.setOnC ...

  4. Android跳转动画时长,Android_Activit跳转动画之界面上某个位置并裂开上下拉伸动画跳转,需求:Activity(fragment)跳转的时候 - phpStudy...

    Activit跳转动画之界面上某个位置并裂开上下拉伸动画跳转 需求:Activity(fragment)跳转的时候当前界面裂开,上下各自拉出手机屏幕,之后跳转到相对应的Activity.整体效果图如下 ...

  5. 最新Android基础入门教程目录(完结版)

    第一章:环境搭建与开发相关(已完结 10/10) https://blog.csdn.net/coder_pig/article/details/50000773 Android基础入门教程--1.1 ...

  6. 跳转dialog主题activity 界面屏幕抖动解决

    最近首页有个复杂的dialog 页面,自己用的activity跳转,将主题设置为dialog, 发现进入界面的时候屏幕 有时候会闪屏,上下抖动,而有时候没问题,尝试解决,最后我在跳转后的activit ...

  7. 2015年最新Android基础入门教程目录(完结版)

    2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全 ...

  8. Activity系列--Activity跳转

    app之内或者app之间的Activity之间是可以进行跳转的,比如短信app,从短信列表Activity跳入查看短信详情Activity. 那这节就来介绍Activity的跳转相关的知识. 需要先了 ...

  9. Android -- 基础篇 -- Activity跳转动画的五种方式(下)

    上一篇文章中我们讲解了在Activity启动过程中获取组件宽高的五种方式.在Activity的启动过程中如果我们直接在生命周期方法中通过view.getWidth()或者是view.getHeight ...

最新文章

  1. 异常处理机制(Begin try Begin Catch)
  2. 史上最全数据结构算法之递归系列学习,建议收藏!
  3. 时间序列(二)数据重采样
  4. 如何理解Return的返回值?
  5. kafka滞销瓶颈解决方案
  6. 半导体制冷器性能计算
  7. Spring CGLlB动态代理
  8. 网络无人值守安装linux----kickstart
  9. java struts2下载文件_java struts2入门学习---文件下载的二种方式
  10. memory java heap_java.lang.OutOfMemoryError: Java heap space解决方法
  11. LeetCode 647. Palindromic Substrings
  12. VAssistX失效后重新安装双击没反应
  13. python图像物体的自动标注_python中matplotlib实现随鼠标滑动自动标注代码实例
  14. ul li img标签 图片不显示的问题
  15. 美通企业日报 | 信达生物与礼来制药达成战略合作;希尔顿旗下康莱德酒店亮相天津...
  16. 前端程序员拿到新电脑第一天,该做些什么?
  17. 开源ETL工具kettle系列
  18. Oracle-存储过程(procedure、function、package、tigger)
  19. Nginx学习实践总结
  20. UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xbd in position 5: illegal multibyte sequence

热门文章

  1. linux创建管道的函数,Linux下的有名管道(03)---使用函数创建和删除有名管道
  2. hbase 客户端_读《HBase权威指南》 客户端API:基础知识
  3. cookie代码加时间多久出现一次_一文彻底搞懂Cookie、Session、Token到底是什么
  4. python列表大于60_Python使用filter如何对给定列表中的数字进行过滤,保留大于等于60的数字?...
  5. dockerfile arg_解读三组容易混淆的 Dockerfile 指令
  6. 接口规范 7. 按需录制相关接口
  7. mysql update修改数据_MYsql如何用update语句修改数据,值得一看
  8. Java中JTextField.getText() 和 JPassword.getPassword() 的区别
  9. 毕设日志——Linux软连接的建立与删除
  10. PHP学习8——图像处理