Activity之间是否可以传递对象呢 Serializable

(1)、Person对象核心代码:


public class Person implements Serializable {
private String userName;
private int age;
private int sex;

private List<String> infoList;

public List<String> getInfoList() {

return infoList;
}

public void setInfoList(List<String> infoList) {

this.infoList = infoList;

}

public String getUserName() {

return userName;
}

publicvoid setUserName(String userName) {
this.userName = userName;
}

publicint getAge() {
returnage;
}
publicvoid setAge(int age) {
this.age = age;
}

publicint getSex() {
returnsex;
}

publicvoid setSex(int
this.sex = sex;
}
}
(2)、MainActivity页面:


publicclass MainActivity extends Activity {

private Person person = null;

@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

List<String> list = new ArrayList<String>();

list.add("one");

list.add("two");

list.add("three");

person = new Person();

person.setUserName("wangxiangjun");

person.setAge(40);

person.setSex(1);

person.setInfoList(list);

}




public void clickButton(View view) {

switch (view.getId()) {

case R.id.button_main_submit:

Intent intent = new Intent(MainActivity.this,

ReceiverActivity.class);

Bundle bundle = new Bundle();

bundle.putSerializable("person", person);

intent.putExtras(bundle);

startActivity(intent);

break;

}
}




@Override

publicboolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

returntrue;

}

}
(3)、MainActivity页面:


publicclass ReceiverActivity extends Activity {

@Override

protectedvoid onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_receiver);

Intent intent = getIntent();

Bundle bundle = intent.getExtras();

// 接收Serializable对象

Person data = (Person) bundle.getSerializable("person");

setTitle(data.getUserName() + ":" + data.getAge() + ":"

+ data.getInfoList());
}
@Override

publicboolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.receiver, menu);

returntrue;

}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Android 平台上,Activity 之间是可以通过 Intent 传递数据的,但是 Intent 只支持传递基本数据类型和 Parcelable 或 Serializable 类型的对象,不支持传递哈希表。如果需要传递哈希表,可以把哈希表转换成 Parcelable 或 Serializable 类型的对象后再传递,或者使用其他的数据传递方式,比如使用全局变量或者单例模式来保存数据。另外,需要注意的是,哈希表传递过程中需要考虑数据安全性和性能等问题。 ### 回答2: Activity之间是可以互传哈希表的。在Android中,可以通过Intent来实现Activity之间的通信和数据传递。Intent是一种用于在不同组件之间传递信息的对象,它可以携带不同类型的数据,包括哈希表。在发送Intent时,可以将哈希表作为附加的数据放置到Intent中,然后通过startActivity或者startActivityForResult方法来启动另一个Activity。 在接收Intent的目标Activity中,可以通过getIntent方法获取到传递过来的Intent,然后使用getExtras方法获取到携带的附加数据。针对传递的哈希表,可以通过键值对的方式进行获取,获取到后就可以在目标Activity中使用这个哈希表了。 需要注意的是,在传递哈希表时要确保哈希表内的数据类型是可序列化的,因为Intent要求传递的数据类型是可序列化的才能在不同的Activity之间进行传递。另外,由于Intent有一定的大小限制,传递较大的哈希表可能会导致传递失败或者发生异常,因此在实际传递中需要注意数据的大小和合理性。 综上所述,Activity之间是可以互传哈希表的,通过Intent传递数据可以实现Activity之间的通信和数据传递。 ### 回答3: 哈希表是一种数据结构,用于存储键值对。它通过将键映射到一个固定的索引值来加快对数据的访问速度。在Android开发中,Activity是一种表示用户界面和交互逻辑的组件。它们通常用于应用程序的不同页面或功能模块。 Activity之间可以通过多种方式进行数据传递,例如Intent、Bundle和接口回调等。然而,直接传递哈希表可能不是最佳的做法。 首先,Activity之间的数据传递应尽量简洁和高效。传递一个大型的哈希表可能会导致性能问题,特别是在数据传递的过程中。 其次,Activity之间的数据传递应该遵循“高内聚、低耦合”的原则。意味着每个Activity应该只关注自己需要的数据,而不应该获取其他Activity的全部数据。直接传递一个哈希表可能会破坏这种原则,增加数据的依赖性和复杂性。 相反,更好的做法是针对具体的数据需求,只传递必要的数据。可以通过Intent的附加数据(putExtra)或Bundle来传递简单的键值对数据。如果需要在多个Activity之间共享数据,可以考虑使用全局变量、单例模式或者使用SharedPreferences、数据库等持久化技术。 总之,虽然Activity之间可以通过哈希表进行数据传递,但在实际开发中,应该遵循简洁、高效、低耦合的原则,选择合适的数据传递方式来满足具体的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值