Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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 Android-如何将对象[]强制转换为文件[]_Java_Android_File_Object - Fatal编程技术网

Java 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

我正在用android创建一个应用程序!我正在尝试使用以下代码行从我的主活动类传递文件[]:

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
的自定义类似乎很简单,这样你就可以将文件从一个活动传递到另一个活动。只需在一个活动中使用这些文件,然后关闭它们。如果你真的再次需要它们,那么在另一个活动中打开。