Java Android-如何将对象[]强制转换为文件[]
我正在用android创建一个应用程序!我正在尝试使用以下代码行从我的主活动类传递文件[]:Java Android-如何将对象[]强制转换为文件[],java,android,file,object,Java,Android,File,Object,我正在用android创建一个应用程序!我正在尝试使用以下代码行从我的主活动类传递文件[]: File[] listFile; File file = new File(android.os.Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Eye Spy"); if (file.isDirectory()) { listFile = (File[]) file.li
File[] listFile;
File file = new File(android.os.Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Eye Spy");
if (file.isDirectory()) {
listFile = (File[]) file.listFiles();
}
Intent i = new Intent();
i.putExtra("images", listFile);
listFile = (File[]) getIntent().getExtras().get("images");
使用以下代码行连接到my MapsActivity:
File[] listFile;
File file = new File(android.os.Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Eye Spy");
if (file.isDirectory()) {
listFile = (File[]) file.listFiles();
}
Intent i = new Intent();
i.putExtra("images", listFile);
listFile = (File[]) getIntent().getExtras().get("images");
但当我运行应用程序时,它会显示一条错误消息,上面说:
java.lang.RuntimeException:无法启动活动组件信息{com.example.pathnrdo.eyespy1/com.example.pathnrdo.eyespy1.mapsaActivity}:java.lang.ClassCastException:java.lang.Object[]无法强制转换为java.io.File[]
有什么问题吗?我怎样才能修好它?感谢您的回复:)
file.listFiles()
已返回文件[],您不需要再次强制转换。file.listFiles()
已返回文件[],您不需要再次强制转换。好的!我已经解决了我的问题!我只是将这些代码实现到我的MapsActivity中,这样我就不必在活动之间传递代码:
File[] listFile;
File file = new File(android.os.Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Eye Spy");
if (file.isDirectory()) {
listFile = (File[]) file.listFiles();
}
好的!我已经解决了我的问题!我只是将这些代码实现到我的MapsActivity中,这样我就不必在活动之间传递代码:
File[] listFile;
File file = new File(android.os.Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Eye Spy");
if (file.isDirectory()) {
listFile = (File[]) file.listFiles();
}
问题是
getIntent().getExtras().get(“*KEY*”)代码>返回一个对象,您不能简单地将对象[]强制转换为文件[]
因此,您要做的是将对象数组中的每个对象强制转换为文件
例如,您可以执行以下操作:
final Object[] potentialFiles = (Object[]) getIntent().getExtras().getSerializable("*KEY*");
List<File> list = new LinkedList<>();
Objects.requireNonNull(potentialFiles);
for (final Object o : potentialFiles) {
if (o instanceof File) {
list.add((File) o);
}
}
File[] files = list.toArray(new File[]{});
问题是getIntent().getExtras().get(“*KEY*”)代码>返回一个对象,您不能简单地将对象[]强制转换为文件[]
因此,您要做的是将对象数组中的每个对象强制转换为文件
例如,您可以执行以下操作:
final Object[] potentialFiles = (Object[]) getIntent().getExtras().getSerializable("*KEY*");
List<File> list = new LinkedList<>();
Objects.requireNonNull(potentialFiles);
for (final Object o : potentialFiles) {
if (o instanceof File) {
list.add((File) o);
}
}
File[] files = list.toArray(new File[]{});
嗯,是的!但是我需要将它传递给另一个activity.class文件也实现了Serializable,只是一个意图是可以的。但是我认为这是每个activity都可以做的,所以为什么不在MapActivityHmm上获取listFile呢。是 啊但是我需要将它传递给另一个activity.class文件也实现了可序列化,只是一个意图是可以的。但我认为这是可以在每个activity上执行的操作,所以为什么不在MapActivity上获取列表文件呢?您不能将对象[]
数组放入捆绑包中。您需要找到其他方法将文件数组传递给其他活动。您不能将对象[]
数组放入捆绑包中。您需要找到其他方法将文件数组传递给另一个活动。IMO,这是一种方法。创建一个实现Parceable
的自定义类似乎很简单,这样您就可以将文件从一个活动传递到另一个活动。只需在一个活动中使用这些文件,然后关闭它们。如果你真的需要它们,那么在另一个活动中打开。这是一个方法,IMO。创建一个实现Parceable
的自定义类似乎很简单,这样你就可以将文件从一个活动传递到另一个活动。只需在一个活动中使用这些文件,然后关闭它们。如果你真的再次需要它们,那么在另一个活动中打开。