Android四大组件——Activity——Activity之间通信下
显式意图:一般是用于应用内组件跳转。(如从ActivityA跳转到ActivityB)
隐式意图:一半用于应用之间的跳转。(如从ActivityA跳转到拨号)
隐式意图跳转到百度:
只需将前面MainActivity中的Intent改为如下便可。
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.baidu.com"));
startActivity(intent);
}
这里Intent的action是Intent.ACTION_VIEW,这是一个Android系统内置的动作,常量值是:android.intent.action.VIEW.
然后通过Uri.parse("https://www.baidu.com")将一个网址字符串解析成一个Uri对象。再调用Intent的setData()方法将这个Uri对象传递进去。
setData()方法接收一个Uri对象,用于指定当前Intent正在操作的数据。
运行效果图:
隐式意图跳转到拨号
只需将前面MainActivity中的Intent改为如下便可。
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"));
startActivity(intent);
}
将action指定为Intent.ACTION_DIAL,这也是Android内置的动作。
运行效果如下:
点击MainActivity中的按钮,页面就跳转过来了。
界面间传递对象
首先创建一个User对象。让它实现Parcelable接口。
package com.kotlin.activitystudy; import android.os.Parcel;
import android.os.Parcelable;
/*
只要实现了 Parcelable 接口,一个类的对象就可以实现序列化并可以通过 Intent 和 Binder 传递。
*/
public class User implements Parcelable {
private String name;
private String age;
private String sex; public User(){ } public User(String name, String age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
} protected User(Parcel in) { //从序列化后的对象中创建原始对象,按顺序读取后创建
name = in.readString();
age = in.readString();
sex = in.readString();
} public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel in) { //从序列化后的对象中创建原始对象
return new User(in);
}
@Override
public User[] newArray(int size) { //创建指定长度的原始对象数组
return new User[size];
}
}; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} @Override
public int describeContents() {//返回当前对象的内容描述。如果含有文件描述符,返回 1,否则返回 0,几乎所有情况都返回 0
return 0;
} @Override
public void writeToParcel(Parcel dest, int flags) { //将当前对象按顺序写入序列化结构中,其中 flags 标识有两种值:0 或者 1;为 1 时标识当前对象需要作为返回值返回,不能立即释放资源,几乎所有情况都为 0
dest.writeString(name);
dest.writeString(age);
dest.writeString(sex);
}
}
修改MainActivity中的跳转代码:
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,MainActivity2.class);
User user = new User(username.getText().toString(),"18","女");
intent.putExtra("user",user);
startActivity(intent);
}
再修改MainActivity2中的接收代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
initView();
//接收传递过来的数据
Intent intent = getIntent();
if(intent != null){
User user = intent.getParcelableExtra("user");//获取user对象
if(user != null){
information.setText(user.getName()+user.getAge()+user.getSex()+"欢迎登陆");
}else {
information.setText("user为空!!!!!");
}
}else {
information.setText("没接收到任何数据");
}
}
代码都非常简单,来看看运行效果:
也可以实现Serializable接口传递。
Parcelable 与 Serializable 对比
- Serializable 使用 I/O 读写存储在硬盘上,而 Parcelable 是直接在内存中读写
- Serializable 会使用反射,序列化和反序列化过程需要大量 I/O 操作, Parcelable 自已实现封送和解封(marshalled &unmarshalled)操作不需要用反射,数据也存放在 Native 内存中,效率要快很多
部分内容转载自:https://www.jianshu.com/p/e8217c36cd9a
Android四大组件——Activity——Activity之间通信下的更多相关文章
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- 【Android开发日记】之入门篇(四)——Android四大组件之Activity
在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...
- Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)
如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com ...
- Android四大组件及activity的四大启动模式
Android四大组件 1. 广播接收者的两种类型: (1)系统广播接收者,就是继承BroadcastReceiver这个类,然后还要在清单文件中注册,注册之后给他一个action.当系统发生了这个a ...
- Android 四大组件之 Activity(二)
1.综述 Activity是Android四大组件(Application Components)之一,简单来说Activity就是平常所见到的用户界面,一般情况下,一个Activity所占的窗口是满 ...
- Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...
- Android 四大组件之 Activity(一)
1.Activity的定义及作用: Android系统中的四大组件之一,可以用于显示View.Activity是一个与用户交互的系统模块,几乎所有的Activity都是和用户进行交互的一个应用程序的组 ...
- [Android基础]Android四大组件之Activity总结
1.Activity简介 Activity是Android一个非常重要的用户接口(四大组件之一),是可见的,主要是用户和应用程序之间进行交互的接口.在每个Activity中都可以放很多控件,所以也可以 ...
- Android 四大组件之Activity(续2)
1.生命周期 关于生命周期,在详细讲解下: 上图是从android官网获取的生命周期. 正常的流程,很多文章都讨论过了,我们讨论几个特殊的情况. 1)OnResume->OnPause-> ...
随机推荐
- UIautomatorviewer连接设备报错Unexpected error while obtaining UI hierarchy
先来看下现象哈,点击sdk/tools下uiautomatorviever.bat,点击连接设备的图标,本以为就这么简单,那你就错了: 是不是看到这个瞬间心情就不好了,那么我们该怎么解决这个问题呢,归 ...
- Citus 分布式 PostgreSQL 集群 - SQL Reference(摄取、修改数据 DML)
插入数据 要将数据插入分布式表,您可以使用标准 PostgreSQL INSERT 命令.例如,我们从 Github 存档数据集中随机选择两行. INSERT http://www.postgresq ...
- python爬虫 Selenium库学习
一.自动化测试工具,支持多种浏览器,解决JS渲染问题 二.安装 pip3 install Selenium 三.操作介绍(因为是学习别人的课程为了尊重知识产权,部分代码就不显示了) 1驱动浏览器 br ...
- 迷宫问题,打印所有路径,深度搜索,dfs
#include<iostream> using namespace std; int maze [5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0 ...
- elasticsearch 是如何实现 master 选举的 ?
面试官:想了解 ES 集群的底层原理,不再只关注业务层面了. 前置前提: 1.只有候选主节点(master:true)的节点才能成为主节点. 2.最小主节点数(min_master_nodes)的目的 ...
- 学习Apache(二)
反向代理负载均衡之APACHE 一.反向代理1.1 介绍反响代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将 ...
- 动态规划 洛谷P1616 疯狂的采药
动态规划 洛谷P1616 疯狂的采药 同样也是洛谷的动态规划一个普及-的题目,接下来分享一下我做题代码 看到题目,没很认真的看数据大小,我就提交了我的代码: 1 //动态规划 洛谷P1616 疯狂的采 ...
- python学习笔记(三)——函数
函数定义 def 函数名(形参 . . . ) 函数体 1. 函数参数 返回值:可以有一个或多个 形参:支持默认形参.关键字形参.可变参数形参等 1.1 必须参数 调用时传入的参数必须与定义时相同. ...
- css3中什么时候用transition什么时候用animation实现动画
在css3中transition和animation都可以实现动画效果,但是我们什么时候用transition,什么时候用animation. 当有事件触发动画的时候我们就用transition.比如 ...
- 分享一个react 图片上传组件 支持OSS 七牛云
react-uplod-img 是一个基于 React antd组件的图片上传组件 支持oss qiniu等服务端自定义获取签名,批量上传, 预览, 删除, 排序等功能 需要 react 版本大于 v ...