diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java
index a16e56d47..5a7249085 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/ChartFragment.java
@@ -37,6 +37,7 @@ import com.google.common.annotations.VisibleForTesting;
import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -172,7 +173,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
tripStatisticsUpdater = startTime != -1L ? new TripStatisticsUpdater(startTime) : null;
pendingPoints.clear();
chartView.reset();
- getActivity().runOnUiThread(new Runnable() {
+ runOnUiThread(new Runnable() {
@Override
public void run() {
if (isResumed()) {
@@ -211,7 +212,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
if (isResumed()) {
chartView.addDataPoints(pendingPoints);
pendingPoints.clear();
- getActivity().runOnUiThread(updateChart);
+ runOnUiThread(updateChart);
}
}
@@ -232,7 +233,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
@Override
public void onNewWaypointsDone() {
if (isResumed()) {
- getActivity().runOnUiThread(updateChart);
+ runOnUiThread(updateChart);
}
}
@@ -244,7 +245,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
}
metricUnits = metric;
chartView.setMetricUnits(metricUnits);
- getActivity().runOnUiThread(new Runnable() {
+ runOnUiThread(new Runnable() {
@Override
public void run() {
if (isResumed()) {
@@ -269,7 +270,7 @@ public class ChartFragment extends Fragment implements TrackDataListener {
getActivity(), R.string.chart_show_speed_key, PreferencesUtils.CHART_SHOW_SPEED_DEFAULT);
setSeriesEnabled(ChartView.SPEED_SERIES, chartShowSpeed && reportSpeed);
setSeriesEnabled(ChartView.PACE_SERIES, chartShowSpeed && !reportSpeed);
- getActivity().runOnUiThread(new Runnable() {
+ runOnUiThread(new Runnable() {
@Override
public void run() {
if (isResumed()) {
@@ -414,6 +415,18 @@ public class ChartFragment extends Fragment implements TrackDataListener {
zoomControls.setIsZoomOutEnabled(chartView.canZoomOut());
}
+ /**
+ * Runs a runnable on the UI thread if possible.
+ *
+ * @param runnable the runnable
+ */
+ private void runOnUiThread(Runnable runnable) {
+ FragmentActivity fragmentActivity = getActivity();
+ if (fragmentActivity != null) {
+ fragmentActivity.runOnUiThread(runnable);
+ }
+ }
+
/**
* Given a location, fill in a data point, an array of double[].
* data[0] = time/distance