Android 串行化getSerializable、getSerializableExtra 传参
程序员文章站
2022-04-21 10:23:32
Android中的Activity传递数据时,为了方便往往将很多数据封装成对象,然后将整个对象传递过去。传对象的时候有两种情况,一种是实现Parcelable接口,一种是实现Serializable接口。可以用bundle putSerializable(Key,Object)传递数据或者直接用intent putExtrr(Key,Object)传递数据。android串行化getSerializable、getSerializableExtra 传参案例1 不用 Bundle 封装数据提交a...
Android中的Activity传递数据时,为了方便往往将很多数据封装成对象,然后将整个对象传递过去。传对象的时候有两种情况,一种是实现Parcelable接口,一种是实现Serializable接口。
可以用bundle putSerializable(Key,Object)传递数据或者直接用intent putExtrr(Key,Object)传递数据。
android串行化getSerializable、getSerializableExtra 传参
案例1 不用 Bundle 封装数据
提交activity:
mDoctorAdapter.setOnItemCallBack(new MainHomeDoctorAdapter.OnItemCallBack() {
@Override
public void onItemClick(View view,int position) {
Intent intent=new Intent();
intent.setClass(btsAllinfoActivity.this,btsMapActivity.class);
intent.putExtra("bts_map", mList.get(position));
startActivity(intent);
}
});
接收数据activity:
Intent intent=getIntent();
mapData=intent.getSerializableExtra("bts_map");
String id = mapData.getID();
String name = mapData.getName();
案例二 用Bundle封装数据
提交activity:
Intent intent=new Intent();
Bundle bundle = new Bundle();
intent.setClass(btsAllinfoActivity.this,btsMapActivity.class);
bundle.putSerializable("bts_map", mList.get(position));
intent.putExtras(bundle);
startActivity(intent);
接收activity:
Bundle bundle = getIntent().getExtras();
mapData = bundle.getSerializableExtra("bts_map");
String id = mapData.getID();
String name = mapData.getName();
注意:实体类里也要实现Serializable接口
进行传递数据的时候遇到的问题:
1、抛出java.io.NotSerializableException异常
抛出这个异常是因为你的对象没有实现Serializable接口
2、抛出java.lang.RuntimeException异常
抛出这个异常是因为传递的对象里面的对象也要实现Serializable接口
解决方案:只要在实体类里实现Serializable接口就好了(所有嵌套的实体类都实现SerialZable接口)
public class MainHomeData implements Serializable{
private List<ListBean> list;
public List<ListBean> getList() {
return list;
}
public void setList(List<ListBean> list) {
this.list = list;
}
public static class DoctorBean implements Serializable {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
本文地址:https://blog.csdn.net/weixin_44177244/article/details/108709882