Java 将任意类型的数组从一个活动传递到另一个活动

Java 将任意类型的数组从一个活动传递到另一个活动,java,android,arrays,android-activity,Java,Android,Arrays,Android Activity,我正在测试putExtras()方法,当我使用适当的键设置数组并使用get方法从调用的活动获取它时,它工作得非常好。但是,我注意到其他类型的代码是不可能的,或者至少它没有给我一个选项,以防你想知道我在这里说的是我所指的代码: Bundle b =new Bundle(); b.putStringArray(key, array); Intent i =new Intent(context, secondActivity); i.putExtras(b); StartActivity(i);

我正在测试putExtras()方法,当我使用适当的键设置数组并使用get方法从调用的活动获取它时,它工作得非常好。但是,我注意到其他类型的代码是不可能的,或者至少它没有给我一个选项,以防你想知道我在这里说的是我所指的代码:

Bundle b =new Bundle();  
b.putStringArray(key, array);
Intent i =new Intent(context, secondActivity);
i.putExtras(b);
StartActivity(i);
要从另一个类获取数组,只需执行以下操作:

Bundle b=this.getIntent().getExtras();
String[] array=b.getStringArray(key);
请注意这里的“key”字符串变量,它是唯一能识别您请求的数组的东西,因此两边都必须相同

现在这段代码运行得非常好,但是我尝试传递一个File类型的数组和另一个Option类型的数组

你知道在这种情况下我怎么做吗


提前谢谢。

根据我对Android的理解,您只能使用捆绑包传递基本类型。不能传递自定义对象。所以有很多方法可以做到这一点。一个快速而混乱的解决方案是将文件数组作为静态变量检索。因此,您可以执行类似于
SomeActivity.fileArray
的操作,但是,我不推荐使用这种方法,只展示了一个简单的示例。。。或者,您可以将对象序列化为某种基本类型(json字符串),然后在您想要使用它的活动中对其进行反序列化。

您可以使用重载版本的
Intent.putExtra()
方法来执行此操作,该方法接受
可序列化的
。这是可能的,因为
File
实现了
Serializable
,Java数组也可以序列化。然后,可以使用
Intent.getSerializableExtra()
方法获取此数组


如果你想把
File[]
放到
Bundle
中,你可以使用
Bundle.putSerializable()
Bundle.getSerializable()
方法。

请将你正在编程的语言添加到你问题的标签中。^我认为很明显这是Java。我为文件尝试了它,但键入“Option”不行。你们知道如何使用Option对象来实现这一点吗?很抱歉,我没有说清楚,但Option是我自己创建的对象。我只想将其传递给另一个活动。如果要使用意图将自定义对象传递给活动,则应使其
可序列化
可打包
。在您的示例中,这意味着
选项
必须实现其中一个接口。