diff options
| author | Michael Keppler <michael.keppler@gmx.de> | 2014-04-26 17:24:53 +0200 |
|---|---|---|
| committer | Michael Keppler <michael.keppler@gmx.de> | 2014-04-26 17:24:53 +0200 |
| commit | dc0baacfc2ae0f7e53631bbba2c70f1f70340939 (patch) | |
| tree | 012c2aa979cb8081c210ad074722da0967d848c4 /main | |
| parent | 351954de15f41aec4d98323b13155ef5c9f68664 (diff) | |
| download | cgeo-dc0baacfc2ae0f7e53631bbba2c70f1f70340939.zip cgeo-dc0baacfc2ae0f7e53631bbba2c70f1f70340939.tar.gz cgeo-dc0baacfc2ae0f7e53631bbba2c70f1f70340939.tar.bz2 | |
#3778: remove reference from geo updater to details activity
Diffstat (limited to 'main')
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index da8cc7d..a66d181 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -145,19 +145,7 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc private SearchResult search; - private final GeoDirHandler locationUpdater = new GeoDirHandler() { - @Override - public void updateGeoData(final IGeoData geo) { - if (cacheDistanceView == null) { - return; - } - - if (geo.getCoords() != null && cache != null && cache.getCoords() != null) { - cacheDistanceView.setText(Units.getDistanceFromKilometers(geo.getCoords().distanceTo(cache.getCoords()))); - cacheDistanceView.bringToFront(); - } - } - }; + private GeoDirHandler locationUpdater; private CharSequence clickedItemText = null; @@ -319,6 +307,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc loadCacheHandler.sendMessage(Message.obtain()); } }); + + locationUpdater = new CacheDetailsGeoDirHandler(this); } @Override @@ -523,6 +513,30 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc return true; } + private static final class CacheDetailsGeoDirHandler extends GeoDirHandler { + private final WeakReference<CacheDetailActivity> activityRef; + + public CacheDetailsGeoDirHandler(final CacheDetailActivity activity) { + this.activityRef = new WeakReference<CacheDetailActivity>(activity); + } + + @Override + public void updateGeoData(final IGeoData geo) { + final CacheDetailActivity activity = activityRef.get(); + if (activity == null) { + return; + } + if (activity.cacheDistanceView == null) { + return; + } + + if (geo.getCoords() != null && activity.cache != null && activity.cache.getCoords() != null) { + activity.cacheDistanceView.setText(Units.getDistanceFromKilometers(geo.getCoords().distanceTo(activity.cache.getCoords()))); + activity.cacheDistanceView.bringToFront(); + } + } + } + private final static class LoadCacheHandler extends SimpleCancellableHandler { public LoadCacheHandler(CacheDetailActivity activity, Progress progress) { |
