日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Activity之间传递类对象

發(fā)布時間:2023/12/13 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Activity之间传递类对象 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、簡介

開發(fā)過程中,Activity之間傳遞數(shù)據(jù)是必不可少的,Android中使用Intent和Bundle作為數(shù)據(jù)載體,在Activity之間傳遞,對于基礎數(shù)據(jù)類型,Bundle已經(jīng)提供了相關的put、set方法,而作為自定義的類型則需要有特別的要求。

自定義類型,想要使用Bundle傳遞時,需要滿足特定的條件,即該類型需要實現(xiàn)Serializable接口或Parcelable接口。

注:如果目標對象中包含其他對象,則被包含的對象也需要實現(xiàn)Serializable接口或Parcelable接口。

二、代碼實現(xiàn)

我們以Serializable接口為例:

1、傳遞對象

1)自定義對象,實現(xiàn)Serializable接口

package com.davis.drawtrangle;import java.io.Serializable;public class Person implements Serializable{private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}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;} }

2)使用Intent傳遞對象

private void clearDrawView(){Intent intent = new Intent(MainActivity.this, SecondActivity.class);Person person = new Person("admin", 1);Bundle bundle = new Bundle();bundle.putSerializable("person", person);intent.putExtras(bundle);startActivity(intent);}

3)獲取傳遞的數(shù)據(jù)

private void init(){Person person = (Person)getIntent().getSerializableExtra("person");Log.i("TAG", "Person name : " + person.getName() + " ---- age : " + person.getAge());}

2、傳遞對象集合

1)同上。

2)同上。

注:使用putSerializable()方法時,需要把List<>強轉(zhuǎn)成為Serializable,并且集合中的成員都需要實現(xiàn)Serializable接口。

private void clearDrawView(){Intent intent = new Intent(MainActivity.this, MainActivity.class);List<Person> lists = new ArrayList<Person>();Person person = new Person("admin", 1);lists.add(person);Bundle bundle = new Bundle();bundle.putSerializable("person", (Serializable) lists);intent.putExtras(bundle);startActivity(intent);}

3)同上。

注:不足之處在于,由于獲取數(shù)據(jù)時候,需要把Serializable強轉(zhuǎn)成為對應的List<>,此處會有警告。

private void init(){List<Person> lists = (List<Person>)getIntent().getSerializableExtra("person");for(int i=0;i<lists.size();i++) {Person person = lists.get(i);Log.i("TAG", "Person name : " + person.getName() + " ---- age : " + person.getAge());}}

三、注意

使用以上方法傳遞對象時,都是創(chuàng)建了新的實例,而非傳遞對象的引用,如果是傳遞引用,也就無需序列化了。

總結(jié)

以上是生活随笔為你收集整理的Android Activity之间传递类对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。