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-> ...
随机推荐
- C#: .net序列化及反序列化 [XmlElement(“节点名称”)] [XmlAttribute(“节点属性”)] (下篇)
介绍 XML 序列化 .NET Framework 开发员指南 序列化是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间 ...
- 【论文阅读】CVPR2021: MP3: A Unified Model to Map, Perceive, Predict and Plan
Sensor/组织: Uber Status: Reading Summary: 非常棒!端到端输出map中间态 一种建图 感知 预测 规划的通用框架 Type: CVPR Year: 2021 引用 ...
- 一个tomcat部署两个springboot服务时启动JMX报错
一.问题来源 今天在部署开发好的组件的时候,发现无法启动,检查启动日志,报如下错误: 2022-03-17T10:39:41.823+08:00 ERROR vediomanage.vediomana ...
- 如何在 Spring Boot 中禁用 Actuator 端点安全性?
默认情况下,所有敏感的 HTTP 端点都是安全的,只有具有 ACTUATOR 角色的用户才能访问它们.安全性是使用标准的 HttpServletRequest.isUserInRole 方法实施的. ...
- 关于XML文件
关于xml文件没有提示(eclipse) 点我
- 剑指Offer30——包含min函数的栈
剑指Offer30--包含min函数的栈 1. 题目简述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数在该栈中,调用min.push及pop的时间复杂度是O(1). 2. 题 ...
- 判断集合中存在String字符串 或 判断集合中不存在String字符串
一.使用场景 用于集合中有多个相近的字符,无法使用包含判断 如: 这里如果我想判断以上集合中是否包含"信封件-DE"就会被"信封件-DE2"影响到 毕竟:&qu ...
- vue和mint-ui loadMore 实现上拉加载和下拉刷新
首先安装mint-ui组件库 npm install mint-ui 在main.js中引入mint-ui和样式 import 'mint-ui/lib/style.css' import MintU ...
- WebSocket学习笔记
参考文章链接:http://www.ruanyifeng.com/blog/2017/05/websocket.html 简单示例:https://www.yiibai.com/websocket/p ...
- 猿人学python爬虫第一题
打开网站.F12,开启devtools.发现有段代码阻止了我们调试 好的.接下来有几种解决方法 1- 绕过阻止调试方法 方法1(推荐) 鼠标放在debugger该行,左边数字行号那一列.右键选择不在永 ...