From 771a9ecda3b0c756cfb97b5718af412af4231165 Mon Sep 17 00:00:00 2001 From: neslihanturan Date: Tue, 21 May 2019 17:20:11 +0300 Subject: [PATCH] Makes sure that initialize nearby operations method is called just after all views and fragments are ready and attached --- .../commons/contributions/MainActivity.java | 2 ++ .../nrw/commons/di/FragmentBuilderModule.java | 2 +- .../mvp/fragments/NearbyMapFragment.java | 6 ++-- .../mvp/fragments/NearbyParentFragment.java | 26 +++++++++++++-- .../NearbyParentFragmentPresenter.java | 32 +++++++++++-------- 5 files changed, 50 insertions(+), 18 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 10521f880..abf3e778c 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 @@ -5,6 +5,7 @@ import android.app.AlertDialog; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -407,6 +408,7 @@ public class MainActivity extends AuthenticatedActivity implements FragmentManag } case 1: + Log.d("deneme","case 1"); NearbyParentFragment retainedNearbyFragment = getNearbyFragment(1); if (retainedNearbyFragment != null) { return retainedNearbyFragment; diff --git a/app/src/main/java/fr/free/nrw/commons/di/FragmentBuilderModule.java b/app/src/main/java/fr/free/nrw/commons/di/FragmentBuilderModule.java index 05847efde..4350e08d9 100644 --- a/app/src/main/java/fr/free/nrw/commons/di/FragmentBuilderModule.java +++ b/app/src/main/java/fr/free/nrw/commons/di/FragmentBuilderModule.java @@ -14,7 +14,7 @@ import fr.free.nrw.commons.explore.recentsearches.RecentSearchesFragment; import fr.free.nrw.commons.media.MediaDetailFragment; import fr.free.nrw.commons.media.MediaDetailPagerFragment; import fr.free.nrw.commons.nearby.NearbyListFragment; -import fr.free.nrw.commons.nearby.NearbyMapFragment; +import fr.free.nrw.commons.nearby.mvp.fragments.NearbyMapFragment; import fr.free.nrw.commons.nearby.mvp.fragments.NearbyParentFragment; import fr.free.nrw.commons.review.ReviewImageFragment; import fr.free.nrw.commons.settings.SettingsFragment; diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyMapFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyMapFragment.java index b0161d1c1..84d846263 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyMapFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyMapFragment.java @@ -3,6 +3,7 @@ package fr.free.nrw.commons.nearby.mvp.fragments; import android.content.Context; import android.net.Uri; import android.os.Bundle; +import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; @@ -22,7 +23,6 @@ import butterknife.BindView; import butterknife.ButterKnife; import fr.free.nrw.commons.R; import fr.free.nrw.commons.di.CommonsDaggerSupportFragment; -import fr.free.nrw.commons.nearby.NearbyFragment; import fr.free.nrw.commons.nearby.Place; import fr.free.nrw.commons.nearby.mvp.contract.NearbyMapContract; import fr.free.nrw.commons.nearby.mvp.contract.NearbyParentFragmentContract; @@ -68,7 +68,7 @@ public class NearbyMapFragment extends CommonsDaggerSupportFragment implements N @Override public void initViews() { Timber.d("init views called"); - View view = ((NearbyFragment)getParentFragment()).view; + View view = ((NearbyParentFragment)getParentFragment()).view; ButterKnife.bind(this, view); bottomSheetListBehavior = BottomSheetBehavior.from(bottomSheetList); bottomSheetDetailsBehavior = BottomSheetBehavior.from(bottomSheetDetails); @@ -223,7 +223,9 @@ public class NearbyMapFragment extends CommonsDaggerSupportFragment implements N @Override public void setViewsAreReady(NearbyParentFragmentContract.ViewsAreReadyCallback viewsAreReadyCallback) { + Log.d("deneme","setViewsAreReady"); this.viewsAreReadyCallback = viewsAreReadyCallback; + this.viewsAreReadyCallback.nearbyFragmentAndMapViewReady(); } @Override diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java index 55da3b35c..a54130659 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/fragments/NearbyParentFragment.java @@ -24,6 +24,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.fragment.app.FragmentTransaction; import butterknife.BindView; import butterknife.ButterKnife; import fr.free.nrw.commons.R; @@ -70,6 +71,8 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment WikidataEditListener wikidataEditListener; @Inject Gson gson; + @Inject + LocationServiceManager locationManager; private NearbyParentFragmentContract.UserActions userActions; @@ -95,6 +98,8 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); + Log.d("deneme","onCreate"); + } @Nullable @@ -103,6 +108,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment View view = inflater.inflate(R.layout.fragment_nearby, container, false); ButterKnife.bind(this, view); this.view = view; + Log.d("deneme","onCreateView"); return view; } @@ -118,7 +124,9 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment * it is attached. */ public void childMapFragmentAttached() { - nearbyParentFragmentPresenter = new NearbyParentFragmentPresenter(this, nearbyMapFragment); + Log.d("deneme","childMapFragmentAttached"); + nearbyParentFragmentPresenter = new NearbyParentFragmentPresenter + (this, nearbyMapFragment, locationManager); } @@ -138,6 +146,7 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment * Resume fragments if they exists */ private void resumeFragment() { + Log.d("deneme","resumeFragment"); // Find the retained fragment on activity restarts nearbyMapFragment = getMapFragment(); nearbyListFragment = getListFragment(); @@ -147,7 +156,20 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment * Returns the map fragment added to child fragment manager previously, if exists. */ private NearbyMapFragment getMapFragment() { - return (NearbyMapFragment) getChildFragmentManager().findFragmentByTag(TAG_RETAINED_MAP_FRAGMENT); + NearbyMapFragment existingFragment = (NearbyMapFragment) getChildFragmentManager() + .findFragmentByTag(TAG_RETAINED_MAP_FRAGMENT); + if (existingFragment == null) { + existingFragment = setMapFragment(); + } + return existingFragment; + } + + private NearbyMapFragment setMapFragment() { + FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction(); + NearbyMapFragment nearbyMapFragment = new NearbyMapFragment(); + fragmentTransaction.replace(R.id.container, nearbyMapFragment, TAG_RETAINED_MAP_FRAGMENT); + fragmentTransaction.commitAllowingStateLoss(); + return nearbyMapFragment; } /** diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java index e4ca68707..132deb215 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/mvp/presenter/NearbyParentFragmentPresenter.java @@ -1,6 +1,6 @@ package fr.free.nrw.commons.nearby.mvp.presenter; -import javax.inject.Inject; +import android.util.Log; import fr.free.nrw.commons.location.LatLng; import fr.free.nrw.commons.location.LocationServiceManager; @@ -18,8 +18,7 @@ public class NearbyParentFragmentPresenter WikidataEditListener.WikidataP18EditListener, LocationUpdateListener, NearbyParentFragmentContract.ViewsAreReadyCallback{ - @Inject - LocationServiceManager locationManager; + private NearbyParentFragmentContract.View nearbyParentFragmentView; private NearbyMapContract.View nearbyMapFragmentView; @@ -29,11 +28,15 @@ public class NearbyParentFragmentPresenter boolean nearbyViewsAreReady; boolean onTabSelected; + private LocationServiceManager locationServiceManager; + public NearbyParentFragmentPresenter(NearbyParentFragmentContract.View nearbyParentFragmentView, - NearbyMapContract.View nearbyMapFragmentView) { + NearbyMapContract.View nearbyMapFragmentView, + LocationServiceManager locationServiceManager) { this.nearbyParentFragmentView = nearbyParentFragmentView; this.nearbyMapFragmentView = nearbyMapFragmentView; nearbyMapFragmentView.setViewsAreReady(this); + this.locationServiceManager = locationServiceManager; } @Override @@ -47,6 +50,7 @@ public class NearbyParentFragmentPresenter */ @Override public void onTabSelected() { + Log.d("deneme","onTabSelected"); onTabSelected = true; if (nearbyViewsAreReady) { initializeNearbyOperations(); @@ -59,6 +63,7 @@ public class NearbyParentFragmentPresenter */ @Override public void nearbyFragmentAndMapViewReady() { + Log.d("deneme","nearbyFragmentAndMapViewReady"); nearbyViewsAreReady = true; if (onTabSelected) { initializeNearbyOperations(); @@ -71,12 +76,13 @@ public class NearbyParentFragmentPresenter */ @Override public void initializeNearbyOperations() { - locationManager.addLocationListener(this); - nearbyParentFragmentView.registerLocationUpdates(locationManager); + Log.d("deneme","initializeNearbyOperations"); + locationServiceManager.addLocationListener(this); + nearbyParentFragmentView.registerLocationUpdates(locationServiceManager); // Nearby buttons should be active, they should be deactive only during update lockNearby(false); //This will start a consequence to check GPS depending on different API - nearbyParentFragmentView.checkGps(locationManager); + nearbyParentFragmentView.checkGps(locationServiceManager); //We will know when we went offline and online again nearbyParentFragmentView.addNetworkBroadcastReceiver(); } @@ -90,11 +96,11 @@ public class NearbyParentFragmentPresenter public void lockNearby(boolean isNearbyLocked) { this.isNearbyLocked = isNearbyLocked; if (isNearbyLocked) { - locationManager.unregisterLocationManager(); - locationManager.removeLocationListener(this); + locationServiceManager.unregisterLocationManager(); + locationServiceManager.removeLocationListener(this); } else { - nearbyParentFragmentView.registerLocationUpdates(locationManager); - locationManager.addLocationListener(this); + nearbyParentFragmentView.registerLocationUpdates(locationServiceManager); + locationServiceManager.addLocationListener(this); } } @@ -115,8 +121,8 @@ public class NearbyParentFragmentPresenter return; } - //nearbyParentFragmentView.registerLocationUpdates(locationManager); - LatLng lastLocation = locationManager.getLastLocation(); + //nearbyParentFragmentView.registerLocationUpdates(locationServiceManager); + LatLng lastLocation = locationServiceManager.getLastLocation(); if (curLatLng != null) { // TODO figure out what is happening here about orientation change