java - 如何在 Andorid Studios 中序列化/可打包对
问题描述
我正在尝试从主要活动开始一个新活动,新活动不需要来自先前活动的任何信息,但是它会将某些内容发送回主要活动,但我尚未实施。现在我觉得很奇怪的是我的主要工作以前是这样的
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maintemp);
ArrayList<Pair<String, Integer>> list = new ArrayList<>();
//Add stuff to the array
Bundle bundle = new Bundle();
bundle.putSerializable("list", list);
FooFragment fooFrag = new FooFragment();
fooFrag.setArguments(bundle);
getSupportFragmentManager().beginTransaction()
.add(R.id.foo_fragment, fooFrag)
.commit();
}
这按预期工作。现在,如果满足某些条件,我想潜在地开始一项活动
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maintemp);
if(/*Some conditions*/){
startActivity(new Intent(this, Bar.class));
}
ArrayList<Pair<String, Integer>> list = new ArrayList<>();
//Add stuff to the array
Bundle bundle = new Bundle();
bundle.putSerializable("list", list);
FooFragment fooFrag = new FooFragment();
fooFrag.setArguments(bundle);
getSupportFragmentManager().beginTransaction()
.add(R.id.foo_fragment, fooFrag)
.commit();
}
当我满足 if 标准并且 Bar 活动开始时,IDE/编译器抱怨说:
包裹:无法编组价值对
现在 Activity 根本不需要 Pair 列表,但不知何故它抱怨它不是 Parcelable
为了解决这个问题,我尝试创建一个仅包含 Pair 列表的类,并使该类可序列化并捆绑该类,这给出了错误
Parcelable 在写入可序列化对象时遇到 IOException
我认为这又是由于无法序列化这对。
那么有没有办法让Android的Pair Parcelable呢?还是我的错误在哪里?
解决方案
那么有没有办法让Android的Pair Parcelable呢?
你不能。您可以在捆绑包中分别传递信息(第一个和第二个),也可以创建自己的Pair
实现类Parcelable
推荐阅读
- java - 在 Kotlin 中关闭应用程序后,如何将 onItemSelected 保留在选定的同一项目上?
- java - 在多线程环境中处理文件后删除输入目录
- css - Scrollspy 根本不起作用 - 菜单项未突出显示
- python - 努力使用 Requests/Session 登录 Goodreads;我尝试登录网络抓取时缺少什么?
- java - 在 Android Studio 中,我只能看到“创建新类”对话框的简单形式
- php - 如何使用 Laravel 将 PayPal 数组响应详细信息发布到数据库
- linux - 如何在 linux 命令行中使用管道在后台成功之前重新运行某些内容?
- angular - Angular - ngui-auto-complete 意外焦点错误
- django - 如何总结 django 网站中表值的整列?
- django - 错误 Django 模型 - ForeignKey 和 SQLSever