summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortobrun <tobrun.van.nuland@gmail.com>2018-10-29 16:00:44 +0100
committertobrun <tobrun.van.nuland@gmail.com>2018-10-29 16:02:10 +0100
commitb55d54fffecbce13218c707ddbe63ee63bd98af4 (patch)
treeaacd1e550ed15cd44b5b6716af8e2cfd6e1b1f93
parent516a2858a240fbab2e9de37ffc041408b7c48340 (diff)
downloadqtlocation-mapboxgl-upstream/tvn-dialog-dismiss.tar.gz
[android] - avoid leaking dialog on orientation changeupstream/tvn-dialog-dismiss
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java13
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java5
2 files changed, 15 insertions, 3 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java
index 5cba2109e2..36753b1264 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java
@@ -11,7 +11,6 @@ import android.support.annotation.NonNull;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Toast;
-
import com.mapbox.mapboxsdk.MapStrictMode;
import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.mapboxsdk.R;
@@ -24,8 +23,8 @@ import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
import java.util.Locale;
+import java.util.Set;
/**
* Responsible for managing attribution interactions on the map.
@@ -42,6 +41,7 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt
private final Context context;
private final MapboxMap mapboxMap;
+ private AlertDialog alertDialog;
private Set<Attribution> attributionSet;
public AttributionDialogManager(@NonNull Context context, @NonNull MapboxMap mapboxMap) {
@@ -49,6 +49,12 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt
this.mapboxMap = mapboxMap;
}
+ public void onStop() {
+ if (alertDialog != null && alertDialog.isShowing()) {
+ alertDialog.dismiss();
+ }
+ }
+
// Called when someone presses the attribution icon on the map
@Override
public void onClick(View view) {
@@ -70,7 +76,8 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.mapbox_attributionsDialogTitle);
builder.setAdapter(new ArrayAdapter<>(context, R.layout.mapbox_attribution_list_item, attributionTitles), this);
- builder.show();
+ // TODO alter API with semver to return alertdialog from this method
+ alertDialog = builder.show();
}
private String[] getAttributionTitles() {
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
index 106026732c..6b06e5d5a2 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
@@ -120,6 +120,11 @@ public final class MapboxMap {
*/
void onStop() {
locationComponent.onStop();
+
+ AttributionDialogManager attrManager = uiSettings.getAttributionDialogManager();
+ if (attrManager != null) {
+ attrManager.onStop();
+ }
}
/**