`

Intent 类初阶

阅读更多

Intent 类初阶

(一)、概述
    Intent 类是 Android 组件间的桥梁,该类负责启动组件,在组件之间传递数据。


(二)、创建 Intent 对象
    方式(1):Intent intent = new Intent(起始组件的对象,目标组件类.class)
    示例:    new intent(this,TargetActivity.class)
    说明:
        (1)参数1是当前 Activity 类的对象
        (2)参数2是目标组件类 class
        (3)Android有四大组件,分别是:ActivityServiceContentProviderBroadcast


    方式(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>

 

1
1
分享到:
评论

相关推荐

    intent传递类内容

    Intent传递类内容主要包括以下几方面: 1. **基本Intent类型**: - **显式Intent**:通过指定目标组件的全名(包括包名和类名)来明确指定要启动的组件。这种方式主要用于同一应用内部的组件间通信。 - **隐式...

    038集-Intent类的重要成员变量

    Intent类在Android开发中扮演着至关重要的角色,它是应用程序间通信(IPC)的主要方式,用于启动活动、服务或者传递数据。本教程将深入探讨Intent类的一些核心成员变量,帮助开发者更好地理解和利用Intent来构建功能...

    Android 学习(26)Intent 分类

    在Android开发中,Intent是一种强大的组件间通信机制,它用于启动其他组件或传递数据。本篇文章将深入探讨Intent的分类及其在Android应用中的作用,同时也会提及Broadcast Receiver,它是Android系统中处理全局广播...

    Android的Intent实验

    - `new Intent(context, Class)`: 用于启动指定类的Activity。 - `new Intent(action)`: 基于动作创建Intent,不指定具体目标。 - `new Intent(context, action)`: 结合上下文和动作创建Intent。 3. **Intent的...

    Intent总结04 Data和Type属性

    Intent分为显式Intent和隐式Intent,而"Intent总结04 Data和Type属性"主要聚焦于Intent的数据(data)和类型(type)两个关键属性,它们在创建Intent时发挥着至关重要的作用。 1. **Intent的数据(data)**: Intent的数据...

    Android Intent传递数据大小限制详解

    在sendBroadcast,startActivity时,我们会用到Intent。 Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能...

    intent的常用方法

    在Android开发中,`Intent`是一个非常重要的类,它主要用于应用程序组件间的通信。通过`Intent`可以启动新的Activity、Service或发送Broadcast等操作。本文将详细介绍`Intent`的一些常见用法及其相关知识点。 #### ...

    Intent系统调用示例

    在Android开发中,Intent是一种非常重要的组件间通信机制。它被用来启动活动(Activity)、服务(Service)或者广播接收器(Broadcast Receiver),并且可以传递数据和执行动作。本篇文章将详细解析“Intent系统调用...

    Android应用:Intent打开另外一个Activity,Intent拨电话,Intent在2个Activity间传递参数

    在Android应用开发中,Intent是一种强大的机制,用于在组件之间进行通信。Intent不仅可以用来启动新的Activity,还可以启动服务、广播接收器等。本教程将详细讲解如何使用Intent来实现特定的功能,包括打开新的...

    Android利用Intent启动和关闭Activity

    【Android Intent 启动和关闭Activity】 在Android应用程序开发中,Intent是连接各个组件(如Activity、Service等)的关键桥梁,主要用于启动和关闭Activity。Intent不仅能够启动一个新的Activity,还能在Activity...

    java Intent的应用小例子

    `来创建一个显式Intent,其中`context`是当前上下文,`targetClass`是要启动的Activity类。 - 隐式Intent通常通过`Intent intent = new Intent(action);`创建,其中`action`是你要执行的动作(如ACTION_VIEW,...

    Android Intent传递泛型类

    当我们需要在Activity之间传递复杂的数据结构,比如自定义的泛型类对象时,Intent就显得尤为重要。本文将深入探讨如何在Android Intent中传递泛型类。 首先,了解Intent的基本用法。Intent通常包含两个主要部分:...

    Android应用源码之Intent_Intent.zip

    在Android开发中,Intent是一个非常核心且至关重要的组件,它扮演着应用程序内部或应用程序之间通信的桥梁角色。Intent主要用于启动活动(Activity)、服务(Service)或者广播接收器(BroadcastReceiver),并传递...

    Intent的多种用法

    本文将深入探讨Intent的使用方式,包括显式Intent、隐式Intent、Intent Filter、数据传递以及如何通过Intent调用系统服务和启动第三方应用。 首先,我们来了解一下**显式Intent**。显式Intent明确指定了要启动的...

    Intent 与 Intent Filters 实现外部调用

    在Android开发中,Intent和Intent Filters是两个至关重要的概念,它们是应用程序之间通信的主要桥梁,也是实现外部调用的关键机制。下面将详细讲解Intent和Intent Filters的工作原理以及如何使用它们来实现外部调用...

    android整合--intent

    在Android开发中,Intent是一种非常重要的组件间通信(IPC)机制。Intent主要用于启动或与其它应用程序组件进行交互,如活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)以及内容提供者...

    intent传递自定义对象

    在Android应用开发中,Intent是连接各个组件(如Activity、Service等)的重要桥梁,它用于在组件间传递数据和启动意图。当我们需要在Intent中传递自定义对象时,Android提供了几种方式来实现这一功能,其中一种常用...

    Android intent原理分析

    ### Android Intent原理深入解析 #### 一、概览与引言 在移动开发领域,特别是在Android平台上,**Intent**作为核心通信机制之一,扮演着关键角色。它不仅用于应用程序内部不同组件之间的通信,也是实现跨应用通信...

    Activity生命周期及Intent传值

    除了字符串,Intent还能传递各种类型的数据,包括整型、浮点型、布尔型、数组、集合以及Parcelable和Serializable接口的实现类对象。对于复杂数据结构,可以使用Bundle的putParcelableArrayListExtra()和...

Global site tag (gtag.js) - Google Analytics