Android中Intent传递对象的两种方法Serializable,Parcelable

2019-12-10 19:14:10王振洲

4.创建主activity。这个activity主要用来响应点击事件,和传递数据。ObjecttranDemo.java:

package com.example.objecttrandemo; 
import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
public class ObjectTranDemo extends Activity implements OnClickListener{ 
private Button sButton,pButton; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
setupViews(); 
} 
//initial the views 
public void setupViews(){ 
sButton = (Button)findViewById(R.id.button1); 
pButton = (Button)findViewById(R.id.button2); 
sButton.setOnClickListener(this); 
pButton.setOnClickListener(this); 
} 
//Serializeable object trance 
public void SerializeMethod(){ 
Person mPerson = new Person(); 
mPerson.setName("durant"); 
mPerson.setAge(25); 
Intent mIntent = new Intent(this,ObjectTranDemo1.class); 
Bundle mBundle = new Bundle(); 
mBundle.putSerializable("mPerson",mPerson); 
mIntent.putExtras(mBundle); 
startActivity(mIntent); 
} 
//Pacelable object trance 
public void PacelableMethod(){ 
Book mBook = new Book(); 
mBook.setBookName("a man from mars"); 
mBook.setAuthor("james"); 
mBook.setPublishTime(2014); 
Intent mIntent = new Intent(this,ObjectTranDemo2.class); 
Bundle mBundle = new Bundle(); 
mBundle.putParcelable("mBook", mBook); 
mIntent.putExtras(mBundle); 
startActivity(mIntent); 
} 
@Override 
public void onClick(View v) { 
if(v == sButton){ 
SerializeMethod(); 
}else{ 
PacelableMethod(); 
} 
} 
}

5.新建activity ObjectTranDemo1.java用来显示Serializable接口传递过来的数据

package com.example.objecttrandemo; 
import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
public class ObjectTranDemo1 extends Activity{ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
TextView mTextView = new TextView(this); 
Person mPerson = (Person)getIntent().getSerializableExtra("mPerson"); 
mTextView.setText("You name is: " + mPerson.getName() + "n"+ 
"You age is: " + mPerson.getAge()); 
setContentView(mTextView); 
} 
}

至此,Serializable接口传递数据完毕,对了,别忘了,在Mainfest.xml文件中声明新的activity

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://www.easck.com/apk/res/android" 
package="com.example.objecttrandemo" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk 
android:minSdkVersion="8" 
android:targetSdkVersion="18" /> 
<application 
android:allowBackup="true" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 
<activity 
android:name="com.example.objecttrandemo.ObjectTranDemo" 
android:label="@string/app_name" > 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 
<activity android:name=".ObjectTranDemo1"></activity> 
<activity android:name=".ObjectTranDemo2"></activity> 
</application> 
</manifest>