From 94201aa9300d659491c8d03869551e9936943806 Mon Sep 17 00:00:00 2001 From: neslihanturan Date: Fri, 7 Sep 2018 21:24:04 +0300 Subject: [PATCH] Return parent fragment instead of parent activity --- .../media/MediaDetailPagerFragment.java | 108 ++++++------------ 1 file changed, 32 insertions(+), 76 deletions(-) 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 953a7f11e..5a7e0658f 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 @@ -9,7 +9,6 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; -import android.os.Handler; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityCompat; import android.support.v4.app.Fragment; @@ -19,6 +18,7 @@ import android.support.v4.content.ContextCompat; import android.support.v4.view.MenuItemCompat; import android.support.v4.view.ViewPager; import android.support.v7.widget.ShareActionProvider; +import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -35,12 +35,9 @@ import javax.inject.Named; import fr.free.nrw.commons.Media; import fr.free.nrw.commons.R; import fr.free.nrw.commons.auth.SessionManager; -import fr.free.nrw.commons.category.CategoryDetailsActivity; -import fr.free.nrw.commons.category.CategoryImagesActivity; import fr.free.nrw.commons.contributions.Contribution; import fr.free.nrw.commons.contributions.ContributionsActivity; import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; -import fr.free.nrw.commons.explore.SearchActivity; import fr.free.nrw.commons.mwapi.MediaWikiApi; import fr.free.nrw.commons.utils.ImageUtils; import timber.log.Timber; @@ -65,7 +62,6 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple ViewPager pager; private Boolean editable; private boolean isFeaturedImage; - MediaDetailAdapter adapter; public MediaDetailPagerFragment() { this(false, false); @@ -81,11 +77,13 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + Log.d("deneme","onCreateView MediaDetailFragment"); View view = inflater.inflate(R.layout.fragment_media_detail_pager, container, false); ButterKnife.bind(this,view); pager.addOnPageChangeListener(this); - adapter = new MediaDetailAdapter(getChildFragmentManager()); + final MediaDetailAdapter adapter = new MediaDetailAdapter(getChildFragmentManager()); + Log.d("deneme","getActivity returns:"+getActivity()); if (savedInstanceState != null) { final int pageNumber = savedInstanceState.getInt("current-page"); @@ -94,12 +92,7 @@ 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; - } - + Log.d("deneme","getActivity returns:"+getActivity()); getActivity().supportInvalidateOptionsMenu(); adapter.notifyDataSetChanged(); }, 100); @@ -129,18 +122,11 @@ 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(); + MediaDetailProvider provider = (MediaDetailProvider) getParentFragment(); Media m = provider.getMediaAtPosition(pager.getCurrentItem()); switch (item.getItemId()) { case R.id.menu_share_current_image: - Intent shareIntent = new Intent(Intent.ACTION_SEND); - shareIntent.setType("text/plain"); - shareIntent.putExtra(Intent.EXTRA_TEXT, m.getDisplayTitle() + " \n" + m.getFilePageTitle().getCanonicalUri()); - startActivity(Intent.createChooser(shareIntent, "Share image via...")); + // Share - intent set in onCreateOptionsMenu, around line 252 return true; case R.id.menu_browser_current_image: // View in browser @@ -166,12 +152,12 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple return true; case R.id.menu_retry_current_image: // Retry - // TODO: Neslihan open later ((ContributionsActivity) getActivity()).retryUpload(pager.getCurrentItem()); + ((ContributionsActivity) getActivity()).retryUpload(pager.getCurrentItem()); getActivity().getSupportFragmentManager().popBackStack(); return true; case R.id.menu_cancel_current_image: // todo: delete image - // TODO: Neslihan open later ((ContributionsActivity) getActivity()).deleteUpload(pager.getCurrentItem()); + ((ContributionsActivity) getActivity()).deleteUpload(pager.getCurrentItem()); getActivity().getSupportFragmentManager().popBackStack(); return true; default: @@ -199,13 +185,10 @@ 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 - || getContext() == null - || getActivity() == null) { - Timber.d("Skipping download media as either imageUrl %s or filename %s activity is null", imageUrl, fileName); + if (imageUrl == null || fileName == null) { return; } @@ -246,11 +229,8 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple menu.clear(); // see http://stackoverflow.com/a/8495697/17865 inflater.inflate(R.menu.fragment_image_detail, menu); if (pager != null) { - MediaDetailProvider provider = (MediaDetailProvider) getActivity(); - if(provider == null) { - return; - } - + //MediaDetailProvider provider = (MediaDetailProvider) getActivity(); + MediaDetailProvider provider = (MediaDetailProvider) getParentFragment(); 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 @@ -260,7 +240,19 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple menu.findItem(R.id.menu_share_current_image).setEnabled(true).setVisible(true); menu.findItem(R.id.menu_download_current_image).setEnabled(true).setVisible(true); - if (m instanceof Contribution ) { + // Set ShareActionProvider Intent + ShareActionProvider mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(menu.findItem(R.id.menu_share_current_image)); + // On some phones null is returned for some reason: + // https://github.com/commons-app/apps-android-commons/issues/413 + if (mShareActionProvider != null) { + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType("text/plain"); + shareIntent.putExtra(Intent.EXTRA_TEXT, + m.getDisplayTitle() + " \n" + m.getFilePageTitle().getCanonicalUri()); + mShareActionProvider.setShareIntent(shareIntent); + } + + if (m instanceof Contribution) { Contribution c = (Contribution) m; switch (c.getState()) { case Contribution.STATE_FAILED: @@ -289,41 +281,13 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple } public void showImage(int i) { - Handler handler = new Handler(); - handler.postDelayed(() -> pager.setCurrentItem(i), 5); - } - - /** - * The method notify the viewpager that number of items have changed. - */ - public void notifyDataSetChanged(){ - adapter.notifyDataSetChanged(); + Log.d("deneme","pager is:"+pager); + pager.setCurrentItem(i); } @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(); - }catch (Exception e){ - e.printStackTrace(); - } - try{ - ((CategoryDetailsActivity) getContext()).requestMoreImages(); - }catch (Exception e){ - e.printStackTrace(); - } - try{ - ((SearchActivity) getContext()).requestMoreImages(); - }catch (Exception e){ - e.printStackTrace(); - } - } - getActivity().supportInvalidateOptionsMenu(); + getParentFragment().getActivity().supportInvalidateOptionsMenu(); } @Override @@ -357,22 +321,14 @@ 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); + pager.postDelayed(() -> getParentFragment().getActivity().supportInvalidateOptionsMenu(), 5); } return MediaDetailFragment.forMedia(i, editable, isFeaturedImage); } @Override public int getCount() { - if(getActivity() == null) { - Timber.d("Skipping getCount. Returning as activity is destroyed!"); - return 0; - } - return ((MediaDetailProvider) getActivity()).getTotalMediaCount(); + return ((MediaDetailProvider) getParentFragment()).getTotalMediaCount(); } } } \ No newline at end of file