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>
?
原文:http://1124117571.iteye.com/blog/2296532