From 4696687ef84181e363ac79f43016d347d7e14a23 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 18 Oct 2019 01:05:15 -0700 Subject: [PATCH] altosdroid: Make altosdroid code more resilient to weird androidisms Sometimes altosdroid was crashing when messing with configuration bits like selecting different themes. These fixes seem to make that happen less. Signed-off-by: Keith Packard --- .../altusmetrum/AltosDroid/AltosDroid.java | 2 +- .../AltosDroid/AltosMapOnline.java | 31 ++++++++++++------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroid.java index f2e0acd7..2854836c 100644 --- a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosDroid.java @@ -595,7 +595,7 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener, mTab.update_ui(telem_state, state, from_receiver, location, mTab == mTabsAdapter.currentItem()); AltosDebug.debug("quiet %b\n", quiet); - if (mAltosVoice != null) + if (mAltosVoice != null && mTabsAdapter.currentItem() != null) mAltosVoice.tell(telem_state, state, from_receiver, location, (AltosDroidTab) mTabsAdapter.currentItem(), quiet); } diff --git a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosMapOnline.java b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosMapOnline.java index 29979a07..272744a3 100644 --- a/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosMapOnline.java +++ b/altosdroid/app/src/main/java/org/altusmetrum/AltosDroid/AltosMapOnline.java @@ -110,8 +110,6 @@ public class AltosMapOnline implements AltosDroidMapInterface, GoogleMap.OnMarke private boolean pad_set; private Polyline mPolyline; - private View map_view; - private double mapAccuracy = -1; private AltosLatLon my_position = null; @@ -121,25 +119,38 @@ public class AltosMapOnline implements AltosDroidMapInterface, GoogleMap.OnMarke public static class AltosOnlineMapFragment extends SupportMapFragment { AltosMapOnline c; + View map_view; public AltosOnlineMapFragment(AltosMapOnline c) { this.c = c; } + public AltosOnlineMapFragment() { + } + @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - getMapAsync(c); + if (c != null) + getMapAsync(c); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - c.map_view = super.onCreateView(inflater, container, savedInstanceState); - return c.map_view; + map_view = super.onCreateView(inflater, container, savedInstanceState); + return map_view; } @Override public void onDestroyView() { super.onDestroyView(); - c.map_view = null; + map_view = null; + } + public void set_visible(boolean visible) { + if (map_view == null) + return; + if (visible) + map_view.setVisibility(View.VISIBLE); + else + map_view.setVisibility(View.GONE); } } @@ -259,12 +270,8 @@ public class AltosMapOnline implements AltosDroidMapInterface, GoogleMap.OnMarke } public void set_visible(boolean visible) { - if (map_view == null) - return; - if (visible) - map_view.setVisibility(View.VISIBLE); - else - map_view.setVisibility(View.GONE); + if (mMapFragment != null) + mMapFragment.set_visible(visible); } public void show(TelemetryState telem_state, AltosState state, AltosGreatCircle from_receiver, Location receiver) { -- 2.30.2