Android Activity - Intent 数据传递(基础数据类型、字符串与字符序列、数组类型、集合类型、Parcelable 对象、Serializable 对象)

发布时间:2026/7/16 1:29:33
Android Activity - Intent 数据传递(基础数据类型、字符串与字符序列、数组类型、集合类型、Parcelable 对象、Serializable 对象) 一、基础数据类型1、基本介绍支持的类型boolean、byte、char、short、int、long、float、double2、演示发送端IntentintentnewIntent(this,ReceiveDataActivity.class);intent.putExtra(is_active,true);intent.putExtra(byte_data,(byte)10);intent.putExtra(initial,A);intent.putExtra(short_num,(short)100);intent.putExtra(age,25);intent.putExtra(timestamp,System.currentTimeMillis());intent.putExtra(price,19.99f);intent.putExtra(pi,3.1415926535);startActivity(intent);接收端IntentintentgetIntent();booleanisActiveintent.getBooleanExtra(is_active,false);bytebyteDataintent.getByteExtra(byte_data,(byte)0);charinitialintent.getCharExtra(initial,\0);shortshortNumintent.getShortExtra(short_num,(short)0);intageintent.getIntExtra(age,0);longtimestampintent.getLongExtra(timestamp,0);floatpriceintent.getFloatExtra(price,0.0f);doublepiintent.getDoubleExtra(pi,0.0);Log.i(TAG,isActive: isActive);Log.i(TAG,byteData: byteData);Log.i(TAG,initial: initial);Log.i(TAG,shortNum: shortNum);Log.i(TAG,age: age);Log.i(TAG,timestamp: timestamp);Log.i(TAG,price: price);Log.i(TAG,pi: pi);# 输出结果 isActive: true byteData: 10 initial: A shortNum: 100 age: 25 timestamp: 1752133742344 price: 19.99 pi: 3.1415926535二、字符串与字符序列1、基本介绍支持的类型String、CharSequence2、演示发送端IntentintentnewIntent(this,ReceiveDataActivity.class);intent.putExtra(username,Alice);intent.putExtra(message,(CharSequence)Hello);startActivity(intent);接收端IntentintentgetIntent();Stringusernameintent.getStringExtra(username);CharSequencemessageintent.getCharSequenceExtra(message);Log.i(TAG,username: username);Log.i(TAG,message: message);# 输出结果 username: Alice message: Hello三、数组类型1、基本介绍支持的基本类型数组boolean[]、byte[]、char[]、short[]、int[]、long[]、float[]、double[]支持的对象类型数组String[]、CharSequence[]2、演示发送端IntentintentnewIntent(this,ReceiveDataActivity.class);intent.putExtra(flags,newboolean[]{true,false});intent.putExtra(byte_array,newbyte[]{1,2,3});intent.putExtra(short_array,newshort[]{10,20});intent.putExtra(chars,newchar[]{A,B});intent.putExtra(numbers,newint[]{1,2,3});intent.putExtra(long_array,newlong[]{100L,200L});intent.putExtra(float_array,newfloat[]{1.1f,2.2f});intent.putExtra(double_array,newdouble[]{1.1,2.2});intent.putExtra(names,newString[]{Alice,Bob});intent.putExtra(texts,newCharSequence[]{Hi,Hello});startActivity(intent);接收端IntentintentgetIntent();boolean[]flagsintent.getBooleanArrayExtra(flags);byte[]byteArrayintent.getByteArrayExtra(byte_array);short[]shortArrayintent.getShortArrayExtra(short_array);char[]charsintent.getCharArrayExtra(chars);int[]numbersintent.getIntArrayExtra(numbers);long[]longArrayintent.getLongArrayExtra(long_array);float[]floatArrayintent.getFloatArrayExtra(float_array);double[]doubleArrayintent.getDoubleArrayExtra(double_array);String[]namesintent.getStringArrayExtra(names);CharSequence[]textsintent.getCharSequenceArrayExtra(texts);Log.i(TAG,flags: Arrays.toString(flags));Log.i(TAG,byteArray: Arrays.toString(byteArray));Log.i(TAG,shortArray: Arrays.toString(shortArray));Log.i(TAG,chars: Arrays.toString(chars));Log.i(TAG,numbers: Arrays.toString(numbers));Log.i(TAG,longArray: Arrays.toString(longArray));Log.i(TAG,floatArray: Arrays.toString(floatArray));Log.i(TAG,doubleArray: Arrays.toString(doubleArray));Log.i(TAG,names: Arrays.toString(names));Log.i(TAG,texts: Arrays.toString(texts));# 输出结果 flags: [true, false] byteArray: [1, 2, 3] shortArray: [10, 20] chars: [A, B] numbers: [1, 2, 3] longArray: [100, 200] floatArray: [1.1, 2.2] doubleArray: [1.1, 2.2] names: [Alice, Bob] texts: [Hi, Hello]四、集合类型1、基本介绍支持的类型ArrayListInteger、ArrayListString、ArrayListCharSequence2、演示发送端ArrayListIntegernumbersListnewArrayList();numbersList.add(100);numbersList.add(200);numbersList.add(300);ArrayListStringnamesListnewArrayList();namesList.add(张三);namesList.add(李四);namesList.add(王五);ArrayListCharSequencetextsListnewArrayList();textsList.add(第一行);textsList.add(第二行);textsList.add(第三行);IntentintentnewIntent(this,ReceiveDataActivity.class);intent.putIntegerArrayListExtra(numbers_list,numbersList);intent.putStringArrayListExtra(names_list,namesList);intent.putCharSequenceArrayListExtra(texts_list,textsList);startActivity(intent);接收端IntentintentgetIntent();ArrayListIntegernumbersListintent.getIntegerArrayListExtra(numbers_list);ArrayListStringnamesListintent.getStringArrayListExtra(names_list);ArrayListCharSequencetextsListintent.getCharSequenceArrayListExtra(texts_list);Log.i(TAG,numbersList: numbersList);Log.i(TAG,namesList: namesList);Log.i(TAG,textsList: textsList);# 输出结果 numbersList: [100, 200, 300] namesList: [张三, 李四, 王五] textsList: [第一行, 第二行, 第三行]五、Parcelable 对象1、基本介绍定义类实现 Parcelable 接口实现writeToParcel()、describeContents()和 CREATOR2、演示publicclassUserimplementsParcelable{privateStringname;privateintage;publicUser(Stringname,intage){this.namename;this.ageage;}protectedUser(Parcelin){namein.readString();agein.readInt();}OverridepublicintdescribeContents(){return0;}OverridepublicvoidwriteToParcel(NonNullParcelparcel,inti){parcel.writeString(name);parcel.writeInt(age);}publicstaticfinalCreatorUserCREATORnewCreatorUser(){OverridepublicUsercreateFromParcel(Parcelparcel){returnnewUser(parcel);}OverridepublicUser[]newArray(inti){returnnewUser[i];}};OverridepublicStringtoString(){returnUser{namename\, ageage};}}发送端UserusernewUser(张三,25);User[]usersnewUser[]{newUser(李四,30),newUser(王五,28)};ArrayListUseruserListnewArrayList();userList.add(newUser(赵六,22));userList.add(newUser(钱七,35));IntentintentnewIntent(this,ReceiveDataActivity.class);intent.putExtra(single_user,user);intent.putExtra(user_array,users);intent.putParcelableArrayListExtra(user_list,userList);startActivity(intent);接收端IntentintentgetIntent();UsersingleUserintent.getParcelableExtra(single_user);Parcelable[]userArrayintent.getParcelableArrayExtra(user_array);ArrayListUseruserListintent.getParcelableArrayListExtra(user_list);Log.i(TAG,singleUser: singleUser);Log.i(TAG,userArray: Arrays.toString(userArray));Log.i(TAG,userList: userList);# 输出结果 singleUser: User{name张三, age25} userArray: [User{name李四, age30}, User{name王五, age28}] userList: [User{name赵六, age22}, User{name钱七, age35}]六、Serializable 对象1、基本介绍定义类实现 Serializable 接口简单易用但性能较差2、演示发送端StaffstaffnewStaff(张三,25);IntentintentnewIntent(this,ReceiveDataActivity.class);intent.putExtra(staff,staff);startActivity(intent);接收端IntentintentgetIntent();Staffstaff(Staff)intent.getSerializableExtra(staff);Log.i(TAG,staff: staff);# 输出结果 staff: Staff{name张三, age25}