`

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
分享到:
评论

相关推荐

    Android最佳学习路线图

    从Java概述、环境搭建到基本程序设计结构,再到面向对象(OOP)的核心概念如对象和类、继承、接口与内部类,以及异常处理、集合框架、多线程、网络编程、IO流、GUI、数据库编程(JDBC)等,每一项都是后续深入学习的必备...

    简单android餐厅管理系统

    4. **意图(Intent)机制**:Intent用于在不同的组件之间传递消息,比如从主菜单启动一个新的Activity来展示订单详情。 5. **适配器(Adapter)和列表视图(ListView/RecyclerView)**:用于展示菜品列表或订单列表...

    First Code for Android

    "First Code Android"这个标签则明确了书籍的核心内容——针对Android的初阶编程教学。在压缩包中包含的"Android第一行代码源码"很可能包含了书中示例程序的源代码,供学习者实践和理解。 在Android开发中,"第一行...

    Mobile_App:作业1

    "Mobile_App:作业1"暗示我们正在处理一个关于移动应用开发的学习任务,可能是一个初阶项目,旨在帮助学习者理解基本概念和技能。 Java作为移动应用开发的重要语言,尤其是在Android平台上,是开发者的首选工具。它...

    Project-1:第一个真正的安卓应用

    "Project-1:第一个真正的安卓应用" 这个标题表明这是一个初阶的安卓应用程序开发项目,可能是为了新手入门或者教学目的而设计的。"第一个真正的安卓应用" 暗示这个项目旨在让学习者从零开始构建一个完整的、功能性的...

    简单计算器

    作为一个初阶项目,它可能包含了创建Android应用的基础元素,如用户界面(UI)的设计、事件监听以及运算逻辑的实现。 【描述】中的“处理了一些简单的Bug”暗示了在开发过程中,开发者遇到了常见的编程错误,如逻辑...

    udacity-android-portfolioapp:纳米学位项目 0

    3. **Activity和Intent**:学习如何创建和管理Activity,以及Intent如何用于在Activity之间传递数据和启动操作。 4. **Layout设计**:使用XML布局文件设计用户界面,理解线性布局(LinearLayout)、相对布局...

    MyAppPortfolio:Android开发人员纳米学位项目

    【描述】"0 APP:我的应用程序组合"是该项目的起点,暗示着这是一个初阶的应用程序,可能是用于展示开发者技能和作品集的平台。在Android应用开发中,0 APP通常表示基础入门级别的应用,可能包括基本的用户界面、...

Global site tag (gtag.js) - Google Analytics