diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java index d5e4fac2f..b51e85903 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailPagerFragment.java @@ -94,6 +94,12 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple view.postDelayed(() -> { pager.setAdapter(adapter); pager.setCurrentItem(pageNumber, false); + + if(getActivity() == null) { + Timber.d("Returning as activity is destroyed!"); + return; + } + getActivity().supportInvalidateOptionsMenu(); adapter.notifyDataSetChanged(); }, 100); @@ -123,6 +129,10 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple @Override public boolean onOptionsItemSelected(MenuItem item) { + if(getActivity() == null) { + Timber.d("Returning as activity is destroyed!"); + return true; + } MediaDetailProvider provider = (MediaDetailProvider) getActivity(); Media m = provider.getMediaAtPosition(pager.getCurrentItem()); switch (item.getItemId()) { @@ -189,10 +199,13 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple * @param m Media file to download */ private void downloadMedia(Media m) { - String imageUrl = m.getImageUrl(), - fileName = m.getFilename(); + String imageUrl = m.getImageUrl(), fileName = m.getFilename(); - if (imageUrl == null || fileName == null) { + if (imageUrl == null + || fileName == null + || getContext() == null + || getActivity() == null) { + Timber.d("Skipping download media as either imageUrl %s or filename %s activity is null", imageUrl, fileName); return; } @@ -234,6 +247,10 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple inflater.inflate(R.menu.fragment_image_detail, menu); if (pager != null) { MediaDetailProvider provider = (MediaDetailProvider) getActivity(); + if(provider == null) { + return; + } + Media m = provider.getMediaAtPosition(pager.getCurrentItem()); if (m != null) { // Enable default set of actions, then re-enable different set of actions only if it is a failed contrib @@ -285,6 +302,10 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple @Override public void onPageScrolled(int i, float v, int i2) { + if(getActivity() == null) { + Timber.d("Returning as activity is destroyed!"); + return; + } if (i+1 >= adapter.getCount()){ try{ ((CategoryImagesActivity) getContext()).requestMoreImages(); @@ -336,6 +357,10 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple public Fragment getItem(int i) { if (i == 0) { // See bug https://code.google.com/p/android/issues/detail?id=27526 + if(getActivity() == null) { + Timber.d("Skipping getItem. Returning as activity is destroyed!"); + return null; + } pager.postDelayed(() -> getActivity().supportInvalidateOptionsMenu(), 5); } return MediaDetailFragment.forMedia(i, editable, isFeaturedImage); @@ -343,6 +368,10 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple @Override public int getCount() { + if(getActivity() == null) { + Timber.d("Skipping getCount. Returning as activity is destroyed!"); + return 0; + } return ((MediaDetailProvider) getActivity()).getTotalMediaCount(); } }