Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Andorid Studio中序列化/打包对_Java_Android - Fatal编程技术网

Java 如何在Andorid Studio中序列化/打包对

Java 如何在Andorid Studio中序列化/打包对,java,android,Java,Android,我正在尝试从主活动启动一个新活动,新活动不需要来自上一个活动的信息,但是它会将一些信息发送回主活动,但我尚未实现。 现在我觉得很奇怪的是,我的主机以前是这样工作的 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.maintemp); ArrayList<Pair<String, Int

我正在尝试从主活动启动一个新活动,新活动不需要来自上一个活动的信息,但是它会将一些信息发送回主活动,但我尚未实现。 现在我觉得很奇怪的是,我的主机以前是这样工作的

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();

}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.maintemp);
ArrayList=新建ArrayList();
//向数组中添加内容
Bundle=新Bundle();
bundle.putSerializable(“list”,list);
FooFragment fooFrag=新的FooFragment();
fooFrag.setArguments(bundle);
getSupportFragmentManager().beginTransaction()
.add(R.id.foo_片段,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();

}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.maintemp);
如果(/*某些条件*/){
startActivity(新的意图(这个,Bar.class));
}
ArrayList=新建ArrayList();
//向数组中添加内容
Bundle=新Bundle();
bundle.putSerializable(“list”,list);
FooFragment fooFrag=新的FooFragment();
fooFrag.setArguments(bundle);
getSupportFragmentManager().beginTransaction()
.add(R.id.foo_片段,fooFrag)
.commit();
}
当我满足if条件且Bar活动开始时,IDE/编译器抱怨:

包裹:无法封送值对

现在,活动根本不需要配对列表,但不知何故,它抱怨它不可打包

为了解决这个问题,我尝试创建一个只包含Pair列表的类,并使该类可序列化,然后只绑定该类 这就产生了错误

Parcelable在写入可序列化对象时遇到IOException

我想这又是因为无法序列化这对

那么,有没有一种方法可以让安卓的配对软件包化呢?还是我的错误在哪里

那么,有没有一种方法可以让安卓的配对软件包化呢


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

使用
HasMap
相反,它也有键值对,可以通过Serializable或Parcelable在活动之间传递以保存项目订单使用
LinkedHashMap

您知道为什么我可以将其绑定到片段视图中吗,但当我开始一项新的活动时,这就不再有效了?