From b8ba89d077fd9b23781884a6468d634e84a4a21d Mon Sep 17 00:00:00 2001 From: Ashish Date: Wed, 21 Oct 2020 01:11:17 +0530 Subject: [PATCH] Fixes #3923 (Back" does nothing in Nearby in particular circumstance) (#3961) * Fixes #3923 * Handled possible missing backpress cases in MainActivity-nearby * Fixes #3923 * Handled possible missing backpress cases in MainActivity-nearby --- .../free/nrw/commons/contributions/MainActivity.java | 11 ++++++----- .../nearby/contract/NearbyParentFragmentContract.java | 2 +- .../nearby/fragments/NearbyParentFragment.java | 4 ++-- .../presenter/NearbyParentFragmentPresenter.java | 8 ++++---- .../nearby/NearbyParentFragmentPresenterTest.kt | 4 ++-- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java b/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java index 69fe4525b..1d0863432 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/MainActivity.java @@ -242,7 +242,7 @@ public class MainActivity extends NavigationBaseActivity implements FragmentMana // Meas that contribution fragment is visible (not nearby fragment) ContributionsFragment contributionsFragment = (ContributionsFragment) getSupportFragmentManager().findFragmentByTag(contributionsFragmentTag); - if (contributionsFragment.getChildFragmentManager().findFragmentByTag(ContributionsFragment.MEDIA_DETAIL_PAGER_FRAGMENT_TAG) != null) { + if (contributionsFragment.getChildFragmentManager().getBackStackEntryCount()>0 ) { // Means that media details fragment is visible to uer instead of contributions list fragment (As chils fragment) // Then we want to go back to contributions list fragment on backbutton pressed from media detail fragment contributionsFragment.getChildFragmentManager().popBackStack(); @@ -257,12 +257,13 @@ public class MainActivity extends NavigationBaseActivity implements FragmentMana contributionsFragment.nearbyNotificationCardView.setVisibility(View.GONE); } } else { - finish(); + super.onBackPressed(); } - } else if (getSupportFragmentManager().findFragmentByTag(nearbyFragmentTag) != null && !isContributionsFragmentVisible) { + } else if (getSupportFragmentManager().findFragmentByTag(nearbyFragmentTag) != null + && !isContributionsFragmentVisible) { // Means that nearby fragment is visible (not contributions fragment) - if (null != nearbyParentFragment) { - nearbyParentFragment.backButtonClicked(); + if (null == nearbyParentFragment || !nearbyParentFragment.backButtonClicked()) { + super.onBackPressed(); } } else { super.onBackPressed(); diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/contract/NearbyParentFragmentContract.java b/app/src/main/java/fr/free/nrw/commons/nearby/contract/NearbyParentFragmentContract.java index 6c71b0764..69d9f58cb 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/contract/NearbyParentFragmentContract.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/contract/NearbyParentFragmentContract.java @@ -89,7 +89,7 @@ public interface NearbyParentFragmentContract { void detachView(); void setActionListeners(JsonKvStore applicationKvStore); - void backButtonClicked(); + boolean backButtonClicked(); void onCameraMove(com.mapbox.mapboxsdk.geometry.LatLng latLng); void filterByMarkerType(List