Intent 类初阶
(一)、概述
Intent 类是 Android 组件间的桥梁,该类负责启动组件,在组件之间传递数据。
(二)、创建 Intent 对象
方式(1):Intent intent = new Intent(起始组件的对象,目标组件类.class)
示例: new intent(this,TargetActivity.class)
说明:
(1)参数1是当前 Activity 类的对象
(2)参数2是目标组件类 class
(3)Android有四大组件,分别是:Activity、Service、ContentProvider和Broadcast
方式(2):Intent intent = new Intent();
Intent.setClass(起始组件的对象,目标组件类.class);
方式(3):获取上一个 Activity 传递过来的 intent 对象。
Intent = getIntent();
通过 Intent 传递数据
(三)、常用方法
1、putExtra(key,value) 作用:以键/值对形式在 intent 对象中保存基本数据类型的数据。 2、putExtra(key,(Serializable)Object) 作用:若存放的是对象,则要将对象序列化再存放数据。 3、getIntExtra(key,intDefaultValue) 作用:获取存放在 intent 对象中的键名为 key 的 int 类型的数据。若获取不到,则赋一个默认值 intDefaultValue。 4、getDoubleExtra(key,doubleValue) 作用:获取存放在 intent 对象中的键名为 key 的 double 类型的数据。若获取不到,则赋一个默认值 longDefaultValue。 5、getLongExtra(key,longDefaultValue) 作用:获取存放在 intent 对象中的键名为 key 的 long 类型的数据。若获取不到,则赋一个默认值为 longDefaultValue。 6、getCharExtra(key,charDefault) 作用:获取存放在 intent 对象中的键名为 key 的 char 类型的数据。若获取不到,则赋一个默认值为 charDefaultValue。 7、getString(key) 作用:获取存放在 intent 对象中的键名为 key 的 String 类型的数据。 8、getStringArray(key) 作用:获取存放在 intent 对象中的键名为 key 的 String 类型的数组。 9、getxxxArray(key) 作用:获取存放在 intent 对象中的键名为 key 的基本数据类型的数组。 10、getSerializableExtra(key) 作用:获取存放在 intent 对象中的键名为 key 的对象。 这个对象必须实现了Serializable接口,然后我们就可以用putExtra(key,value),放进去,接着就可以使用getSerializableExtra(key)来获取对象了。
实例:
MainActivity.java的代码
package com.jxust.day04_01_startactivity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = getIntent(); //使用getSerializableExtra来获取前面LoginActivity传过来的对象 User user = (User) intent.getSerializableExtra("user"); // Toast.makeText(this, user.toString(), 4000).show(); Toast.makeText(this, "用户编号:"+user.getId()+"用户密码:"+user.getPassword(), 4000).show(); //使用getStringExtra来获取前面LoginActivity传过来的数据并且显示 // String id = intent.getStringExtra("id"); // String password = intent.getStringExtra("password"); // Toast.makeText(this, "用户编号:"+id+"用户密码:"+password, 4000).show(); } }
LoginActivity.java的代码
package com.jxust.day04_01_startactivity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; public class LoginActivity extends Activity { EditText metId,metPwd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); setListener(); initView(); } private void initView() { metId = (EditText) findViewById(R.id.etId); metPwd = (EditText) findViewById(R.id.etPwd); } private void setListener() { setLoginClickListener(); } private void setLoginClickListener() { findViewById(R.id.btnLogin).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String id = metId.getText().toString(); String password = metPwd.getText().toString(); User user = new User(Integer.parseInt(id),password); //从LoginActivity跳转到MainActivity Intent intent = new Intent(LoginActivity.this, MainActivity.class); //使用putExtra将User类传递到MainActivity intent.putExtra("user", user); //使用putExtra分别将属性传递到MainActivity // intent .putExtra("id", id); // intent.putExtra("password", password); startActivity(intent); } }); } }
activity
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:stretchColumns="1" > <TableRow> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="输入编号" android:textSize="15sp" /> <EditText android:id="@+id/etId" android:layout_marginLeft="10dp" android:hint="2-10个字符" /> </TableRow> <TableRow> <TextView android:text="密码" android:textSize="15sp" /> <EditText android:id="@+id/etPwd" android:layout_marginLeft="10dp" android:hint="2-10个字符" android:password="true" /> </TableRow> </TableLayout> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="1" > </TableLayout> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="1" > </TableLayout> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="1" > <TableRow> <Button android:layout_height="wrap_content" android:layout_weight="1" android:visibility="invisible" /> <Button android:id="@+id/btnLogin" android:layout_height="wrap_content" android:drawableLeft="@drawable/login" android:background="@drawable/background" android:padding="7dp" android:text="登录" /> <Button android:layout_height="wrap_content" android:layout_weight="1" android:visibility="invisible" /> <Button android:id="@+id/btnExit" android:layout_height="wrap_content" android:drawableLeft="@drawable/exit" android:text="退出" android:padding="7dp" android:background="@drawable/background"/> <Button android:layout_height="wrap_content" android:layout_weight="1" android:visibility="invisible" /> </TableRow> </TableLayout> </TableLayout>
activity_main.xml的代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.jxust.day04_01_startactivity.MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout>
相关推荐
Intent传递类内容主要包括以下几方面: 1. **基本Intent类型**: - **显式Intent**:通过指定目标组件的全名(包括包名和类名)来明确指定要启动的组件。这种方式主要用于同一应用内部的组件间通信。 - **隐式...
Intent类在Android开发中扮演着至关重要的角色,它是应用程序间通信(IPC)的主要方式,用于启动活动、服务或者传递数据。本教程将深入探讨Intent类的一些核心成员变量,帮助开发者更好地理解和利用Intent来构建功能...
在Android开发中,Intent是一种强大的组件间通信机制,它用于启动其他组件或传递数据。本篇文章将深入探讨Intent的分类及其在Android应用中的作用,同时也会提及Broadcast Receiver,它是Android系统中处理全局广播...
- `new Intent(context, Class)`: 用于启动指定类的Activity。 - `new Intent(action)`: 基于动作创建Intent,不指定具体目标。 - `new Intent(context, action)`: 结合上下文和动作创建Intent。 3. **Intent的...
Intent分为显式Intent和隐式Intent,而"Intent总结04 Data和Type属性"主要聚焦于Intent的数据(data)和类型(type)两个关键属性,它们在创建Intent时发挥着至关重要的作用。 1. **Intent的数据(data)**: Intent的数据...
在sendBroadcast,startActivity时,我们会用到Intent。 Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能...
在Android开发中,`Intent`是一个非常重要的类,它主要用于应用程序组件间的通信。通过`Intent`可以启动新的Activity、Service或发送Broadcast等操作。本文将详细介绍`Intent`的一些常见用法及其相关知识点。 #### ...
在Android开发中,Intent是一种非常重要的组件间通信机制。它被用来启动活动(Activity)、服务(Service)或者广播接收器(Broadcast Receiver),并且可以传递数据和执行动作。本篇文章将详细解析“Intent系统调用...
在Android应用开发中,Intent是一种强大的机制,用于在组件之间进行通信。Intent不仅可以用来启动新的Activity,还可以启动服务、广播接收器等。本教程将详细讲解如何使用Intent来实现特定的功能,包括打开新的...
【Android Intent 启动和关闭Activity】 在Android应用程序开发中,Intent是连接各个组件(如Activity、Service等)的关键桥梁,主要用于启动和关闭Activity。Intent不仅能够启动一个新的Activity,还能在Activity...
`来创建一个显式Intent,其中`context`是当前上下文,`targetClass`是要启动的Activity类。 - 隐式Intent通常通过`Intent intent = new Intent(action);`创建,其中`action`是你要执行的动作(如ACTION_VIEW,...
当我们需要在Activity之间传递复杂的数据结构,比如自定义的泛型类对象时,Intent就显得尤为重要。本文将深入探讨如何在Android Intent中传递泛型类。 首先,了解Intent的基本用法。Intent通常包含两个主要部分:...
在Android开发中,Intent是一个非常核心且至关重要的组件,它扮演着应用程序内部或应用程序之间通信的桥梁角色。Intent主要用于启动活动(Activity)、服务(Service)或者广播接收器(BroadcastReceiver),并传递...
本文将深入探讨Intent的使用方式,包括显式Intent、隐式Intent、Intent Filter、数据传递以及如何通过Intent调用系统服务和启动第三方应用。 首先,我们来了解一下**显式Intent**。显式Intent明确指定了要启动的...
在Android开发中,Intent和Intent Filters是两个至关重要的概念,它们是应用程序之间通信的主要桥梁,也是实现外部调用的关键机制。下面将详细讲解Intent和Intent Filters的工作原理以及如何使用它们来实现外部调用...
在Android开发中,Intent是一种非常重要的组件间通信(IPC)机制。Intent主要用于启动或与其它应用程序组件进行交互,如活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)以及内容提供者...
在Android应用开发中,Intent是连接各个组件(如Activity、Service等)的重要桥梁,它用于在组件间传递数据和启动意图。当我们需要在Intent中传递自定义对象时,Android提供了几种方式来实现这一功能,其中一种常用...
### Android Intent原理深入解析 #### 一、概览与引言 在移动开发领域,特别是在Android平台上,**Intent**作为核心通信机制之一,扮演着关键角色。它不仅用于应用程序内部不同组件之间的通信,也是实现跨应用通信...
除了字符串,Intent还能传递各种类型的数据,包括整型、浮点型、布尔型、数组、集合以及Parcelable和Serializable接口的实现类对象。对于复杂数据结构,可以使用Bundle的putParcelableArrayListExtra()和...