diff --git a/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java b/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java index a9db9b3d3..3376667cb 100644 --- a/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/review/ReviewActivity.java @@ -55,6 +55,11 @@ public class ReviewActivity extends BaseActivity { ReviewHelper reviewHelper; @Inject DeleteHelper deleteHelper; + /** + * Represent fragment for ReviewImage + * Use to call some methods of ReviewImage fragment + */ + private ReviewImageFragment reviewImageFragment; final String SAVED_MEDIA = "saved_media"; private Media media; @@ -98,7 +103,6 @@ public class ReviewActivity extends BaseActivity { reviewPagerAdapter = new ReviewPagerAdapter(getSupportFragmentManager()); reviewPager.setAdapter(reviewPagerAdapter); - reviewPagerAdapter.getItem(0); pagerIndicator.setViewPager(reviewPager); progressBar.setVisibility(View.VISIBLE); @@ -113,7 +117,8 @@ public class ReviewActivity extends BaseActivity { } btnSkipImage.setOnClickListener(view -> { - reviewPagerAdapter.disableButtons(); + reviewImageFragment = getInstanceOfReviewImageFragment(); + reviewImageFragment.disableButtons(); runRandomizer(); }); @@ -142,7 +147,8 @@ public class ReviewActivity extends BaseActivity { .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(media -> { - reviewPagerAdapter.disableButtons(); + reviewImageFragment = getInstanceOfReviewImageFragment(); + reviewImageFragment.disableButtons(); updateImage(media); })); return true; @@ -169,7 +175,8 @@ public class ReviewActivity extends BaseActivity { String caption = String.format(getString(R.string.review_is_uploaded_by), fileName, revision.getUser()); imageCaption.setText(caption); progressBar.setVisibility(View.GONE); - reviewPagerAdapter.enableButtons(); + reviewImageFragment = getInstanceOfReviewImageFragment(); + reviewImageFragment.enableButtons(); })); reviewPager.setCurrentItem(0); } @@ -226,4 +233,13 @@ public class ReviewActivity extends BaseActivity { } return super.onOptionsItemSelected(item); } + + /** + * this function return the instance of reviewImageFragment + */ + public ReviewImageFragment getInstanceOfReviewImageFragment(){ + int currentItemOfReviewPager = reviewPager.getCurrentItem(); + reviewImageFragment = (ReviewImageFragment) reviewPagerAdapter.instantiateItem(reviewPager, currentItemOfReviewPager); + return reviewImageFragment; + } } diff --git a/app/src/main/java/fr/free/nrw/commons/review/ReviewPagerAdapter.java b/app/src/main/java/fr/free/nrw/commons/review/ReviewPagerAdapter.java index fb8a0d04e..16b55c6e9 100644 --- a/app/src/main/java/fr/free/nrw/commons/review/ReviewPagerAdapter.java +++ b/app/src/main/java/fr/free/nrw/commons/review/ReviewPagerAdapter.java @@ -2,6 +2,8 @@ package fr.free.nrw.commons.review; import android.os.Bundle; +import android.view.ViewGroup; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentStatePagerAdapter; @@ -9,6 +11,13 @@ import androidx.fragment.app.FragmentStatePagerAdapter; public class ReviewPagerAdapter extends FragmentStatePagerAdapter { private ReviewImageFragment[] reviewImageFragments; + /** + * this function return the instance of ReviewviewPage current item + */ + @Override + public Object instantiateItem(@NonNull ViewGroup container, int position) { + return super.instantiateItem(container, position); + } ReviewPagerAdapter(FragmentManager fm) { super(fm); @@ -32,25 +41,6 @@ public class ReviewPagerAdapter extends FragmentStatePagerAdapter { } } - /** - * This function is called when an image has - * been loaded to enable the review buttons. - */ - public void enableButtons() { - if (reviewImageFragments != null){ - reviewImageFragments[0].enableButtons(); - } - } - - /** - * This function is called when an image is being loaded - * to disable the review buttons - */ - public void disableButtons() { - if (reviewImageFragments != null){ - reviewImageFragments[0].disableButtons(); - } - } @Override public Fragment getItem(int position) {