Android中Intent傳遞類對象提供了兩種方式一種是?通過實現Serializable接口傳遞對象,一種是通過實現Parcelable接口傳遞對象。
要求被傳遞的對象必須實現上述2種接口中的一種才能通過Intent直接傳遞
Intent中傳遞這2種對象的方法:
~~~
Bundle.putSerializable(Key,Object);??//實現Serializable接口的對象
Bundle.putParcelable(Key,?Object);?//實現Parcelable接口的對象
~~~
Person.java
~~~
package com.hust.bundletest;
import java.io.Serializable;
public class Person implements Serializable {
String name;
String password;
String sex;
public Person(String name, String password, String sex) {
super();
this.name = name;
this.password = password;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
~~~
注冊窗體發送Intent的代碼:
~~~
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn=(Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//獲得的三個組件
EditText name=(EditText) findViewById(R.id.name);
EditText password=(EditText) findViewById(R.id.password);
RadioButton male=(RadioButton) findViewById(R.id.radio0);
//判斷是否被選
String sex=(male.isChecked())?"男":"女";
//封裝成一個對象
Person p=new Person(name.getText().toString(),password.getText().toString(),sex);
//創建Bundle對象
Bundle bundle=new Bundle();
bundle.putSerializable("person", p);//Bundle中放一個對象
//創建一個Intent對象
Intent intent=new Intent(MainActivity.this,ResultActivity.class);
intent.putExtras(bundle);
//啟動intent對應的Activity
startActivity(intent);
}
});
~~~
接收端的代碼:
~~~
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
//獲取顯示組件
TextView name=(TextView) findViewById(R.id.text1);
TextView password=(TextView) findViewById(R.id.text2);
TextView sex=(TextView) findViewById(R.id.text3);
//獲取Intent對象
Intent intent=getIntent();
//從Intent對象中獲取序列數據
//Person p=(Person) intent.getSerializableExtra("person");相當于
Bundle bundle=intent.getExtras();//獲取Bundle對象
Person p=(Person) bundle.getSerializable("person");//Bundle對象中獲取可序列化對象
name.setText(p.getName());
password.setText(p.getPassword());
sex.setText(p.getSex());
}
~~~
以上就可以實現對象的傳遞。
如果傳遞的是List,可以把list強轉成Serializable類型,而且object類型也必須實現了Serializable接口
~~~
Intent.putExtras(key,?(Serializable)list)???
~~~
~~~
(List)getIntent().getSerializable(key)
~~~
- 前言
- Eclipse搭建android環境及Genymotion模擬器安裝問題解決方法
- 表格布局(TableLayout)及重要屬性
- 幀布局(FrameLayout)及屬性
- layout_width和width,layout_height和height
- UI組件之TextView及其子類
- UI組件之TextView及其子類(一)TextView和EditText
- UI組件之TextView及其子類(二)RadioButton和CheckBox
- UI組件之TextView及其子類(三)ToggleButton和Switch
- UI組件之TextView及其子類(四)AnalogClock,DigitalClock
- UI組件之TextView及其子類(五)計時器Chronometer
- UI組件之ImageView及其子類(一)ImageView顯示圖片
- UI組件之ImageView及其子類(二)ImageButton ,ZoomButton
- UI組件之AdapterView及其子類關系,Adapter接口及其實現類關系
- UI組件之AdapterView及其子類(一)三種Adapter適配器填充ListView
- UI組件之AdapterView及其子類(二)GridView網格視圖的使用
- UI組件之AdapterView及其子類(三)Spinner控件詳解
- UI組件之AdapterView及其子類(四)Gallery畫廊控件使用
- UI組件之AdapterView及其子類(五)ListView組件和ListActivity
- UI組件之AdapterView及其子類(六)ExpandableListView組件和ExpandableListActivity的使用
- UI組件之 ProgressBar及其子類(一)ProgressBar進度條的使用
- UI組件之ProgressBar及其子類(二)SeekBar拖動條和RatingBar星級評分條的使用
- ViewFlipper的功能和用法
- Toast的功能和用法
- TabHost選項卡的 功能和用法
- AlertDialog創建6種對話框的用法
- Android基于監聽的事件處理機制
- Android基于回調的事件處理
- Handler消息傳遞機制(一)
- Handler消息傳遞機制(二)Handler,Loop,Message,MessageQueue的工作原理
- 啟動Activity的兩種方式startActivity和startActivityForResult(一)
- 啟動Activity的兩種方式startActivity和startActivityForResult(二)
- Activity的生命周期理解
- Bundle在Activity之間交換數據
- 通過 Intent 傳遞類對象
- Intent對象詳解(一)
- Intent對象詳解(二)
- 使用指定的Action,Category調用系統Activity
- 使用Action,Data屬性啟動系統Activity
- Android數據存儲的三種方式-SharedPrefrences,File,SQLite