아래에도 글을 하나 작성했는데
처음에 게시판에 이미지를 업로드하는 버튼을 누르고 아무 반응이 없어서
한번 더 누르니 이번에는 해당 액티비티가 종료되면서 아래와 같은 로그캣을 뱉어냅니다...
FATAL EXCEPTION: main
Process: com.example.sunity, PID: 8311
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.get(ArrayList.java:437)
at com.example.sunity.BulletinBoard.NewWriteActivity.storageUpload(NewWriteActivity.java:229)
at com.example.sunity.BulletinBoard.NewWriteActivity.lambda$new$0$com-example-sunity-BulletinBoard-NewWriteActivity(NewWriteActivity.java:147)
at com.example.sunity.BulletinBoard.NewWriteActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:2)
at android.view.View.performClick(View.java:7441)
at android.view.View.performClickInternal(View.java:7418)
at android.view.View.access$3700(View.java:835)
at android.view.View$PerformClick.run(View.java:28676)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7839)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
아래는 해당 로그에 나온 NewWriteActivity.java 코드입니다.
else if (!isStorageUrl(pathList.get(pathCount)))//229번째 라인
{
String path = pathList.get(pathCount);
successCount++;
contentsList.add(path);
if(isImageFile(path)){
formatList.add("image");
} else if (isVideoFile(path)){
formatList.add("video");
} else {
formatList.add("text");
}
String[] pathArray = path.split("\\.");
final StorageReference mountainImagesRef = storageRef.child("posts/" +documentReference.getId() + "/"+pathCount+"."+pathArray[pathArray.length -1]);
try {
InputStream stream = new FileInputStream(new File(pathList.get(pathCount)));
StorageMetadata metadata = new StorageMetadata.Builder().setCustomMetadata("index",""+(contentsList.size()-1)).build();
UploadTask uploadTask = mountainImagesRef.putStream(stream, metadata);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
final int index = Integer.parseInt(taskSnapshot.getMetadata().getCustomMetadata("index"));
mountainImagesRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
contentsList.set(index, uri.toString());
successCount--;
if (successCount == 0){
//완료
Writeinfo writeinfo = new Writeinfo(title, contentsList, formatList, user.getUid(), date);
storeUpload(documentReference, writeinfo);
}
}
});
}
});
} catch (FileNotFoundException e){
}
pathCount++;
}
//
View.OnClickListener onClickListener = (v) -> {
switch (v.getId()){
case R.id.btn_upload:
storageUpload();//147번째 라인
break;
case R.id.btn_image:
startActivity(GalleryActivity.class, GALLERY_IMAGE, 0);
break;
case R.id.btn_video:
startActivity(GalleryActivity.class, GALLERY_VIDEO, 0);
break;
case R.id.ButtonBackgroundLayout:
if(ButtonBackgroundLayout.getVisibility() == View.VISIBLE){
ButtonBackgroundLayout.setVisibility(View.GONE);
}
break;
case R.id. imageModify:
startActivity(GalleryActivity.class, GALLERY_IMAGE, 1);
ButtonBackgroundLayout.setVisibility(View.GONE);
break;
case R.id.videoModify:
startActivity(GalleryActivity.class, GALLERY_VIDEO, 1);
ButtonBackgroundLayout.setVisibility(View.GONE);
break;
case R.id.Modifydelete:
final View selectedView = (View)selectedImageView.getParent();
String path = pathList.get(parent.indexOfChild(selectedView) -1);
if(isStorageUrl(path)){
StorageReference desertRef = storageRef.child("posts/"+writeinfo.getId()+"/"+storageUrlToName(path));
desertRef.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
showToast(NewWriteActivity.this,"파일 삭제 성공");
pathList.remove(parent.indexOfChild(selectedView) - 1);
parent.removeView(selectedView);
ButtonBackgroundLayout.setVisibility(View.GONE);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
showToast(NewWriteActivity.this,"파일 삭제 실패");
}
});
} else {
pathList.remove(parent.indexOfChild(selectedView) - 1);
parent.removeView(selectedView);
ButtonBackgroundLayout.setVisibility(View.GONE);
}
break;
}
};
//