From f4321d05419e14bbf4bd82e5fbfc9a2507341603 Mon Sep 17 00:00:00 2001 From: neslihanturan Date: Tue, 21 May 2019 14:30:42 +0300 Subject: [PATCH] Prevent crash caused child fragment is actually null by checking if it is attached or not. --- .../commons/nearby/mvp/fragments/NearbyMapFragment.java | 7 +++++++ .../nearby/mvp/fragments/NearbyParentFragment.java | 8 ++++++++ 2 files changed, 15 insertions(+) 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 0ed44ca18..b0161d1c1 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 @@ -1,5 +1,6 @@ package fr.free.nrw.commons.nearby.mvp.fragments; +import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.view.KeyEvent; @@ -104,6 +105,12 @@ public class NearbyMapFragment extends CommonsDaggerSupportFragment implements N viewsAreReadyCallback.nearbyFragmentAndMapViewReady(); } + @Override + public void onAttach(Context context) { + super.onAttach(context); + ((NearbyParentFragment)getParentFragment()).childMapFragmentAttached(); + } + @Override public MapView setupMapView(Bundle savedInstanceState) { return null; 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 6a1dbdfb3..55da3b35c 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 @@ -110,6 +110,14 @@ public class NearbyParentFragment extends CommonsDaggerSupportFragment public void onResume() { super.onResume(); resumeFragment(); + } + + /** + * Thanks to this method we make sure NearbyMapFragment is ready and attached. So that we can + * prevent NPE caused by null child fragment. This method is called from child fragment when + * it is attached. + */ + public void childMapFragmentAttached() { nearbyParentFragmentPresenter = new NearbyParentFragmentPresenter(this, nearbyMapFragment); }