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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值