我正在测试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的数组。
你知道在这些情况下我怎么做吗?
提前谢谢。
答案 0 :(得分:0)
根据我对Android的理解,您只能使用bundle传递原始类型。您无法传递自定义对象。所以有很多方法可以解决这个问题。一个快速而混乱的解决方案是将文件数组检索为静态变量。所以你可以做类似SomeActivity.fileArray
的事情但是,我不推荐这个方法,只是展示一个简单的例子......或者你可以将你的对象序列化为一些原始类型(json字符串)然后在你的活动中反序列化它想要用它。
答案 1 :(得分:0)
您可以使用接受Intent.putExtra()
的{{1}}方法的重载版本来执行此操作。这是可能的,因为Serializable
实现File
并且Java数组也是可序列化的。然后,您可以使用Serializable
方法获取此数组。
如果您想将Intent.getSerializableExtra()
添加到File[]
,可以使用Bundle
和Bundle.putSerializable()
方法。