diff --git a/imagepicker/src/main/java/com/esafirm/imagepicker/features/ImagePickerActivity.java b/imagepicker/src/main/java/com/esafirm/imagepicker/features/ImagePickerActivity.java index 81ddce7e..9aaf8a21 100644 --- a/imagepicker/src/main/java/com/esafirm/imagepicker/features/ImagePickerActivity.java +++ b/imagepicker/src/main/java/com/esafirm/imagepicker/features/ImagePickerActivity.java @@ -26,10 +26,10 @@ import com.esafirm.imagepicker.R; import com.esafirm.imagepicker.features.camera.CameraHelper; +import com.esafirm.imagepicker.features.recyclers.OnBackAction; import com.esafirm.imagepicker.features.recyclers.RecyclerViewManager; import com.esafirm.imagepicker.helper.ImagePickerPreferences; import com.esafirm.imagepicker.helper.IpLogger; -import com.esafirm.imagepicker.helper.ViewUtils; import com.esafirm.imagepicker.model.Folder; import com.esafirm.imagepicker.model.Image; import com.esafirm.imagepicker.view.ProgressWheel; @@ -394,12 +394,18 @@ protected void onDestroy() { @Override public void onBackPressed() { - if (!recyclerViewManager.isDisplayingFolderView()) { - setFolderAdapter(null); - return; - } - setResult(RESULT_CANCELED); - super.onBackPressed(); + recyclerViewManager.handleBack(new OnBackAction() { + @Override + public void onBackToFolder() { + invalidateTitle(); + } + + @Override + public void onFinishImagePicker() { + setResult(RESULT_CANCELED); + finish(); + } + }); } /* --------------------------------------------------- */ diff --git a/imagepicker/src/main/java/com/esafirm/imagepicker/features/recyclers/OnBackAction.java b/imagepicker/src/main/java/com/esafirm/imagepicker/features/recyclers/OnBackAction.java new file mode 100644 index 00000000..3a743216 --- /dev/null +++ b/imagepicker/src/main/java/com/esafirm/imagepicker/features/recyclers/OnBackAction.java @@ -0,0 +1,6 @@ +package com.esafirm.imagepicker.features.recyclers; + +public interface OnBackAction { + void onBackToFolder(); + void onFinishImagePicker(); +} diff --git a/imagepicker/src/main/java/com/esafirm/imagepicker/features/recyclers/RecyclerViewManager.java b/imagepicker/src/main/java/com/esafirm/imagepicker/features/recyclers/RecyclerViewManager.java index 0088cc8d..ba4fffb4 100644 --- a/imagepicker/src/main/java/com/esafirm/imagepicker/features/recyclers/RecyclerViewManager.java +++ b/imagepicker/src/main/java/com/esafirm/imagepicker/features/recyclers/RecyclerViewManager.java @@ -57,7 +57,8 @@ public void changeOrientation(int orientation) { imageColumns = orientation == Configuration.ORIENTATION_PORTRAIT ? 3 : 5; folderColumns = orientation == Configuration.ORIENTATION_PORTRAIT ? 2 : 4; - int columns = isDisplayingFolderView() ? folderColumns : imageColumns; + boolean shouldShowFolder = config.isFolderMode() && isDisplayingFolderView(); + int columns = shouldShowFolder ? folderColumns : imageColumns; layoutManager = new GridLayoutManager(context, columns); recyclerView.setLayoutManager(layoutManager); recyclerView.setHasFixedSize(true); @@ -93,9 +94,17 @@ private void setItemDecoration(int columns) { layoutManager.setSpanCount(columns); } - public boolean isDisplayingFolderView() { - return config.isFolderMode() - && (recyclerView.getAdapter() == null || recyclerView.getAdapter() instanceof FolderPickerAdapter); + public void handleBack(OnBackAction action) { + if (config.isFolderMode() && !isDisplayingFolderView()) { + setFolderAdapter(null); + action.onBackToFolder(); + return; + } + action.onFinishImagePicker(); + } + + private boolean isDisplayingFolderView() { + return recyclerView.getAdapter() == null || recyclerView.getAdapter() instanceof FolderPickerAdapter; } public String getTitle() { diff --git a/sample/src/main/java/com/esafirm/sample/MainActivity.java b/sample/src/main/java/com/esafirm/sample/MainActivity.java index 2f545b55..00007865 100644 --- a/sample/src/main/java/com/esafirm/sample/MainActivity.java +++ b/sample/src/main/java/com/esafirm/sample/MainActivity.java @@ -121,7 +121,7 @@ public void start() { ImagePicker imagePicker = ImagePicker.create(this) .theme(R.style.ImagePickerTheme) .returnAfterFirst(returnAfterCapture) // set whether pick action or camera action should return immediate result or not. Only works in single mode for image picker - .folderMode(true) // set folder mode (false by default) + .folderMode(false) // set folder mode (false by default) .folderTitle("Folder") // folder selection title .imageTitle("Tap to select"); // image selection title