diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-11-04 21:04:33 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-11-04 21:04:33 +0300 |
commit | c342f24a1eabef7a0fb3561794f42124666364fa (patch) | |
tree | 87767d48a9b60e41ea14d128b76aec85a9316c13 /app/src/main/java/it/niedermann/nextcloud/deck/ui | |
parent | d971a59c0f0785113d0971551c40a01f5b7b2c2b (diff) |
Prevent recreating picker if already shown
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/ui')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java index 4f40ac672..efbee761a 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java @@ -307,36 +307,42 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme } private void showGalleryPicker() { - if (isPermissionRequestNeeded(READ_EXTERNAL_STORAGE) || isPermissionRequestNeeded(CAMERA)) { - requestPermissions(new String[]{READ_EXTERNAL_STORAGE, CAMERA}, REQUEST_CODE_PICK_GALLERY_PERMISSION); - } else { - unbindPickerAdapter(); - pickerAdapter = new GalleryAdapter(requireContext(), uri -> onActivityResult(REQUEST_CODE_PICK_FILE, RESULT_OK, new Intent().setData(uri)), this::openNativeCameraPicker, getViewLifecycleOwner()); - binding.pickerRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 3)); - binding.pickerRecyclerView.setAdapter(pickerAdapter); + if (!(pickerAdapter instanceof GalleryAdapter)) { + if (isPermissionRequestNeeded(READ_EXTERNAL_STORAGE) || isPermissionRequestNeeded(CAMERA)) { + requestPermissions(new String[]{READ_EXTERNAL_STORAGE, CAMERA}, REQUEST_CODE_PICK_GALLERY_PERMISSION); + } else { + unbindPickerAdapter(); + pickerAdapter = new GalleryAdapter(requireContext(), uri -> onActivityResult(REQUEST_CODE_PICK_FILE, RESULT_OK, new Intent().setData(uri)), this::openNativeCameraPicker, getViewLifecycleOwner()); + binding.pickerRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 3)); + binding.pickerRecyclerView.setAdapter(pickerAdapter); + } } } private void showContactPicker() { - if (isPermissionRequestNeeded(READ_CONTACTS)) { - requestPermissions(new String[]{READ_CONTACTS}, REQUEST_CODE_PICK_CONTACT_PICKER_PERMISSION); - } else { - unbindPickerAdapter(); - pickerAdapter = new ContactAdapter(requireContext(), uri -> onActivityResult(REQUEST_CODE_PICK_CONTACT, RESULT_OK, new Intent().setData(uri)), this::openNativeContactPicker); - binding.pickerRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); - binding.pickerRecyclerView.setAdapter(pickerAdapter); + if (!(pickerAdapter instanceof ContactAdapter)) { + if (isPermissionRequestNeeded(READ_CONTACTS)) { + requestPermissions(new String[]{READ_CONTACTS}, REQUEST_CODE_PICK_CONTACT_PICKER_PERMISSION); + } else { + unbindPickerAdapter(); + pickerAdapter = new ContactAdapter(requireContext(), uri -> onActivityResult(REQUEST_CODE_PICK_CONTACT, RESULT_OK, new Intent().setData(uri)), this::openNativeContactPicker); + binding.pickerRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + binding.pickerRecyclerView.setAdapter(pickerAdapter); + } } } private void showFilePicker() { - if (isPermissionRequestNeeded(READ_EXTERNAL_STORAGE)) { - requestPermissions(new String[]{READ_EXTERNAL_STORAGE}, REQUEST_CODE_PICK_FILE_PERMISSION); - } else { - unbindPickerAdapter(); - if (SDK_INT >= LOLLIPOP) { - pickerAdapter = new FileAdapter(requireContext(), uri -> onActivityResult(REQUEST_CODE_PICK_FILE, RESULT_OK, new Intent().setData(uri)), this::openNativeFilePicker); - binding.pickerRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); - binding.pickerRecyclerView.setAdapter(pickerAdapter); + if (!(pickerAdapter instanceof FileAdapter)) { + if (isPermissionRequestNeeded(READ_EXTERNAL_STORAGE)) { + requestPermissions(new String[]{READ_EXTERNAL_STORAGE}, REQUEST_CODE_PICK_FILE_PERMISSION); + } else { + unbindPickerAdapter(); + if (SDK_INT >= LOLLIPOP) { + pickerAdapter = new FileAdapter(requireContext(), uri -> onActivityResult(REQUEST_CODE_PICK_FILE, RESULT_OK, new Intent().setData(uri)), this::openNativeFilePicker); + binding.pickerRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + binding.pickerRecyclerView.setAdapter(pickerAdapter); + } } } } |