无法从服务器改装android的响应中提取阵列,导致我崩溃?
我在应用程序中处理传入和传出消息。有一些带有附件的信息,目前我正在做一件事,以某种方式获得这些附件,即下载到手机上。为了下载该文件,我需要知道两件事:它的名称和它所在消息的id。要显示整个消息,我有ViewMessage类:无法从服务器改装android的响应中提取阵列,导致我崩溃?,android,retrofit,Android,Retrofit,我在应用程序中处理传入和传出消息。有一些带有附件的信息,目前我正在做一件事,以某种方式获得这些附件,即下载到手机上。为了下载该文件,我需要知道两件事:它的名称和它所在消息的id。要显示整个消息,我有ViewMessage类: public class ViewMessage { @SerializedName("date") @Expose private String date; @SerializedName("type") @Expose p
public class ViewMessage {
@SerializedName("date")
@Expose
private String date;
@SerializedName("type")
@Expose
private String type;
@SerializedName("user_id")
@Expose
private String userId;
@SerializedName("body")
@Expose
private String body;
@SerializedName("can_delete")
@Expose
private String canDelete;
@SerializedName("can_reply")
@Expose
private String canReply;
@SerializedName("name")
@Expose
private String name;
@SerializedName("subject")
@Expose
private String subject;
@SerializedName("attach")
private FileData[] attach;
private boolean hasAttaches() {
return attach != null && attach.length > 0;
}
public String[] getAttachesNames() {
if(hasAttaches())
{
String[] names = new String[attach.length];
line 44 at my error logs - System.arraycopy(attach, 0, names, 0, attach.length);
return names;
}
return new String[0];
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getCanDelete() {
return canDelete;
}
public void setCanDelete(String canDelete) {
this.canDelete = canDelete;
}
public String getCanReply() {
return canReply;
}
public void setCanReply(String canReply) {
this.canReply = canReply;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
}
class FileData{
private String name;
private float size;
}
然后我尝试在主类中提取数组的函数:
String file_name[] = Objects.requireNonNull(response.body()).getAttachesNames();
line 144 in my error: for (String aFile_name : file_name) {
txt.append(Arrays.toString(file_name) + "/n");
}
但结果,我的应用程序出现故障,出现错误:
08-21 09:41:58.342 E: FATAL EXCEPTION: main
Process: com.example.developer_4.test_login, PID: 3462
java.lang.ArrayStoreException: source[0] of type com.example.developer_4.test_login.data.model.FileData cannot be stored in destination array of type java.lang.String[]
at java.lang.System.arraycopy(Native Method)
at com.example.developer_4.test_login.data.model.ViewMessage.getAttachesNames(ViewMessage.java:44)
at com.example.developer_4.test_login.ActionsMessages.MessageShow$2.onResponse(MessageShow.java:144)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
似乎您正在尝试将FileData[]类型转换为字符串[]。请使用其他方式或只是发布您的响应和FileData类,这样,我可以帮助您
谢谢尝试像这样更改for循环
String file_name[] = Objects.requireNonNull(response.body()).getAttachesNames();
for (int i = 0, i<aFile_name.size(); i++) {
txt.append(String.valueOf(aFile_name.get(i)) + "/n");
}
String file_name[]=Objects.requirennull(response.body()).getAttachesNames();
对于(int i=0,iUnfortuly,或者幸运的是,我解决了我的问题,但是现在输出文件附件数组时出现问题,很可能我将创建一个新问题,或者我可以使用新数据更新当前问题。