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