首页 > 解决方案 > 如何在 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呢?还是我的错误在哪里?

标签: javaandroid

解决方案


那么有没有办法让Android的Pair Parcelable呢?

你不能。您可以在捆绑包中分别传递信息(第一个和第二个),也可以创建自己的Pair实现类Parcelable


推荐阅读