Android对象序列化(Activity之间传递对象,Parcelable小例子)
16lz
2021-01-24
Android中为了能够在Activity之间传递值,需要只用Intent中的put函数。
其中bundle.putParcelable可以实现传递对象,但是这个对象的类必须实现Parcelable接口才能够使用。
下面是一个简单的在Activity之间传递对象的例子。
Parcelable类。最主要的类,也就是我们要传送的对象的类,需要实现Parcelable接口。
package com.zeph.android.Parcelable;import android.os.Parcel;import android.os.Parcelable;public class BenParcelable implements Parcelable {public String name;public int age;public String profession;public BenParcelable(String name, int age, String profession) {this.name = name;this.age = age;this.profession = profession;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getprofession() {return profession;}public void setprofession(String profession) {this.profession = profession;}@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(Parcel parcel, int flag) {parcel.writeString(name);parcel.writeInt(age);parcel.writeString(profession);}public static final Creator CREATOR = new Creator() {public BenParcelable createFromParcel(Parcel in) {return new BenParcelable(in);}public BenParcelable[] newArray(int size) {return new BenParcelable[size];}};private BenParcelable(Parcel in) {name = in.readString();age = in.readInt();profession = in.readString();}}
ParcelableActivity类,传递对象的Activity类。
package com.zeph.android.Parcelable;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 ParcelableActivity extends Activity {private Button myButton;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);myButton = (Button) findViewById(R.id.myButton);myButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {BenParcelable benParcelable = new BenParcelable("BenZeph", 23,"Java/Android Engineer");Intent intent = new Intent();intent.setClass(getApplicationContext(),GetParcelableActivity.class);Bundle bundle = new Bundle();bundle.putParcelable("Ben", benParcelable);intent.putExtras(bundle);startActivity(intent);}});}}
GetParcelableActivity类,接收序列化对象的Activity类。
package com.zeph.android.Parcelable;import android.app.Activity;import android.os.Bundle;public class GetParcelableActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);BenParcelable parcelable = getIntent().getParcelableExtra("Ben");System.out.println(parcelable.getName());System.out.println(parcelable.getAge());System.out.println(parcelable.getprofession());}}
更多相关文章
- C语言函数的递归(上)
- android中webView使用总结---飞速浏览器实现基础.
- Android(安卓)Studio使用lambda
- 8.16 提炼参数对象
- Android中Calendar类的用法总结
- Android(安卓)HAL实现3——基于Manager的HAL设计
- Android(安卓)SQLite使用SQLiteOpenHelper类对数据库进行操作
- Android通过AIDL实现接听电话、挂断电话操作 | 拨打电话
- AndroidMediaRecorder架构详解