diff --git a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java index 790ec263f..27f6e824f 100644 --- a/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/bookmarks/BookmarkListRootFragment.java @@ -184,7 +184,7 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple public void refreshNominatedMedia(int index) { if (mediaDetails != null && !listFragment.isVisible()) { removeFragment(mediaDetails); - mediaDetails = new MediaDetailPagerFragment(false, true); + mediaDetails = MediaDetailPagerFragment.newInstance(false, true); ((BookmarkFragment) getParentFragment()).setScroll(false); setFragment(mediaDetails, listFragment); mediaDetails.showImage(index); @@ -243,7 +243,7 @@ public class BookmarkListRootFragment extends CommonsDaggerSupportFragment imple Log.d("deneme8", "on media clicked"); container.setVisibility(View.VISIBLE); ((BookmarkFragment) getParentFragment()).tabLayout.setVisibility(View.GONE); - mediaDetails = new MediaDetailPagerFragment(false, true); + mediaDetails = MediaDetailPagerFragment.newInstance(false, true); ((BookmarkFragment) getParentFragment()).setScroll(false); setFragment(mediaDetails, listFragment); mediaDetails.showImage(position); diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java b/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java index 78b627cef..341d13f9f 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategoryDetailsActivity.java @@ -115,7 +115,7 @@ public class CategoryDetailsActivity extends BaseActivity mediaContainer.setVisibility(View.VISIBLE); if (mediaDetails == null || !mediaDetails.isVisible()) { // set isFeaturedImage true for featured images, to include author field on media detail - mediaDetails = new MediaDetailPagerFragment(false, true); + mediaDetails = MediaDetailPagerFragment.newInstance(false, true); FragmentManager supportFragmentManager = getSupportFragmentManager(); supportFragmentManager .beginTransaction() diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java index 80c709f3a..7d8058568 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsFragment.java @@ -668,7 +668,7 @@ public class ContributionsFragment @Override public void showDetail(int position, boolean isWikipediaButtonDisplayed) { if (mediaDetailPagerFragment == null || !mediaDetailPagerFragment.isVisible()) { - mediaDetailPagerFragment = new MediaDetailPagerFragment(false, true); + mediaDetailPagerFragment = MediaDetailPagerFragment.newInstance(false, true); if(isUserProfile) { ((ProfileActivity)getActivity()).setScroll(false); } @@ -749,7 +749,7 @@ public class ContributionsFragment public void refreshNominatedMedia(int index) { if(mediaDetailPagerFragment != null && !contributionsListFragment.isVisible()) { removeFragment(mediaDetailPagerFragment); - mediaDetailPagerFragment = new MediaDetailPagerFragment(false, true); + mediaDetailPagerFragment = MediaDetailPagerFragment.newInstance(false, true); mediaDetailPagerFragment.showImage(index); showMediaDetailPagerFragment(); } diff --git a/app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java b/app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java index 1b32d1423..cc2ad5fa6 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/ExploreListRootFragment.java @@ -111,7 +111,7 @@ public class ExploreListRootFragment extends CommonsDaggerSupportFragment implem public void onMediaClicked(int position) { container.setVisibility(View.VISIBLE); ((ExploreFragment) getParentFragment()).tabLayout.setVisibility(View.GONE); - mediaDetails = new MediaDetailPagerFragment(false, true); + mediaDetails = MediaDetailPagerFragment.newInstance(false, true); ((ExploreFragment) getParentFragment()).setScroll(false); setFragment(mediaDetails, listFragment); mediaDetails.showImage(position); diff --git a/app/src/main/java/fr/free/nrw/commons/explore/ExploreMapRootFragment.java b/app/src/main/java/fr/free/nrw/commons/explore/ExploreMapRootFragment.java index 385cd886a..e01fb5948 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/ExploreMapRootFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/ExploreMapRootFragment.java @@ -118,7 +118,7 @@ public class ExploreMapRootFragment extends CommonsDaggerSupportFragment impleme public void onMediaClicked(int position) { container.setVisibility(View.VISIBLE); ((ExploreFragment) getParentFragment()).tabLayout.setVisibility(View.GONE); - mediaDetails = new MediaDetailPagerFragment(false, true); + mediaDetails = MediaDetailPagerFragment.newInstance(false, true); ((ExploreFragment) getParentFragment()).setScroll(false); setFragment(mediaDetails, mapFragment); mediaDetails.showImage(position); diff --git a/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java b/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java index 6701d2c27..7f80c367e 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/SearchActivity.java @@ -221,7 +221,7 @@ public class SearchActivity extends BaseActivity searchView.setVisibility(View.GONE);// to remove searchview when mediaDetails fragment open if (mediaDetails == null || !mediaDetails.isVisible()) { // set isFeaturedImage true for featured images, to include author field on media detail - mediaDetails = new MediaDetailPagerFragment(false, true); + mediaDetails = MediaDetailPagerFragment.newInstance(false, true); supportFragmentManager .beginTransaction() .hide(supportFragmentManager.getFragments().get(supportFragmentManager.getBackStackEntryCount())) diff --git a/app/src/main/java/fr/free/nrw/commons/explore/depictions/WikidataItemDetailsActivity.java b/app/src/main/java/fr/free/nrw/commons/explore/depictions/WikidataItemDetailsActivity.java index 6f250ef60..3b6580365 100644 --- a/app/src/main/java/fr/free/nrw/commons/explore/depictions/WikidataItemDetailsActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/explore/depictions/WikidataItemDetailsActivity.java @@ -153,7 +153,7 @@ public class WikidataItemDetailsActivity extends BaseActivity implements MediaDe mediaContainer.setVisibility(View.VISIBLE); if (mediaDetailPagerFragment == null || !mediaDetailPagerFragment.isVisible()) { // set isFeaturedImage true for featured images, to include author field on media detail - mediaDetailPagerFragment = new MediaDetailPagerFragment(false, true); + mediaDetailPagerFragment = MediaDetailPagerFragment.newInstance(false, true); FragmentManager supportFragmentManager = getSupportFragmentManager(); supportFragmentManager .beginTransaction() 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 3195796c5..c2fdab702 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 @@ -60,7 +60,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple private static CompositeDisposable compositeDisposable = new CompositeDisposable(); @BindView(R.id.mediaDetailsPager) ViewPager pager; - private Boolean editable; + private boolean editable; private boolean isFeaturedImage; private boolean isWikipediaButtonDisplayed; MediaDetailAdapter adapter; @@ -78,21 +78,30 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple return removedItems; } - private MediaDetailPagerFragment() {}; // Constructor calls made to be explicit - @SuppressLint("ValidFragment") - public MediaDetailPagerFragment(Boolean editable, boolean isFeaturedImage) { - this.editable = editable; - this.isFeaturedImage = isFeaturedImage; - isFromFeaturedRootFragment = false; + + /** + * Use this factory method to create a new instance of this fragment using the provided + * parameters. + * + * This method will create a new instance of MediaDetailPagerFragment and the arguments will be + * saved to a bundle which will be later available in the {@link #onCreate(Bundle)} + * @param editable + * @param isFeaturedImage + * @return + */ + public static MediaDetailPagerFragment newInstance(boolean editable, boolean isFeaturedImage) { + MediaDetailPagerFragment mediaDetailPagerFragment = new MediaDetailPagerFragment(); + Bundle args = new Bundle(); + args.putBoolean("is_editable", editable); + args.putBoolean("is_featured_image", isFeaturedImage); + mediaDetailPagerFragment.setArguments(args); + return mediaDetailPagerFragment; } - @SuppressLint("ValidFragment") - public MediaDetailPagerFragment(Boolean editable, boolean isFeaturedImage, int position) { - this.editable = editable; - this.isFeaturedImage = isFeaturedImage; - isFromFeaturedRootFragment = true; - this.position = position; - } + public MediaDetailPagerFragment() { + // Required empty public constructor + }; + @Override public View onCreateView(LayoutInflater inflater, @@ -147,8 +156,11 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { - editable = savedInstanceState.getBoolean("editable"); - isFeaturedImage = savedInstanceState.getBoolean("isFeaturedImage"); + editable = savedInstanceState.getBoolean("editable", false); + isFeaturedImage = savedInstanceState.getBoolean("isFeaturedImage", false); + if(null != pager) { + pager.setCurrentItem(savedInstanceState.getInt("current-page", 0), false); + } } setHasOptionsMenu(true); initProvider(); diff --git a/app/src/test/kotlin/fr/free/nrw/commons/media/MediaDetailPagerFragmentUnitTests.kt b/app/src/test/kotlin/fr/free/nrw/commons/media/MediaDetailPagerFragmentUnitTests.kt index 4782c49e5..b2df5b37b 100644 --- a/app/src/test/kotlin/fr/free/nrw/commons/media/MediaDetailPagerFragmentUnitTests.kt +++ b/app/src/test/kotlin/fr/free/nrw/commons/media/MediaDetailPagerFragmentUnitTests.kt @@ -67,9 +67,8 @@ class MediaDetailPagerFragmentUnitTests { val activity = Robolectric.buildActivity(SearchActivity::class.java).create().get() - fragment = MediaDetailPagerFragment(false, true) - fragment = MediaDetailPagerFragment(false, false) - fragment = MediaDetailPagerFragment(false, false, 0) + fragment = MediaDetailPagerFragment.newInstance(false, true); + fragment = MediaDetailPagerFragment.newInstance(false, false); fragmentManager = activity.supportFragmentManager val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction() fragmentTransaction.add(fragment, null)