mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
TRACKING APP: let activity handle values for viewPager-fragments
This commit is contained in:
1 parent
b3031d6e09
commit
a3855baa5a
4 files changed
+69
-75
No files matched your search
+30
-29
@@ -14,9 +14,7 @@ import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v4.view.ViewPager.OnPageChangeListener;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.tracking.app.BuildConfig;
|
||||
@@ -52,6 +50,9 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
|
||||
private final static String TAG = TrackingActivity.class.getName();
|
||||
private final static String SIS_TRACKING_FRAGMENT = "savedInstanceTrackingFragment";
|
||||
private final static String SIS_LAST_VIEWPAGER_ITEM = "instanceStateLastViewPagerItem";
|
||||
private final static String SIS_LAST_SPEED_TEXT = "instanceStateLastSpeedText";
|
||||
private final static String SIS_LAST_COMPASS_TEXT = "instanceStateLastCompassText";
|
||||
|
||||
private ViewPager mPager;
|
||||
private ScreenSlidePagerAdapter mPagerAdapter;
|
||||
@@ -59,9 +60,20 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
private String eventId;
|
||||
private AppPreferences prefs;
|
||||
|
||||
private TrackingFragment trackingFragment;
|
||||
|
||||
private TrackingFragment trackingFragment;
|
||||
private TimerRunnable timer;
|
||||
|
||||
private int lastViewPagerItem;
|
||||
|
||||
/**
|
||||
* This isn't nice. The callbacks for fragments inside a
|
||||
* view pager are unreliable, but I want the values
|
||||
* to be displayed immediately after device rotation.
|
||||
* Thus they are cached here and the fragments can pick
|
||||
* them up.
|
||||
*/
|
||||
public String lastSpeedIndicatorText = "";
|
||||
public String lastCompassIndicatorText = "";
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -101,12 +113,8 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
|
||||
}
|
||||
mPager.setAdapter(mPagerAdapter);
|
||||
mPager.setOffscreenPageLimit(3);
|
||||
mPager.setOffscreenPageLimit(0);
|
||||
|
||||
// ok, here be dragons.
|
||||
// however, I haven't found out how the ViewPager retains and dismisses fragments, so I check for every case.
|
||||
// The easy way (if savedInstanceState != null) takeFromBundle(); doesn't work, since only some fragments are
|
||||
// saved to the bundle it seems.
|
||||
if (savedInstanceState != null) {
|
||||
Fragment tFragment = getSupportFragmentManager().getFragment(savedInstanceState, SIS_TRACKING_FRAGMENT);
|
||||
if (tFragment != null) {
|
||||
@@ -114,6 +122,10 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
} else {
|
||||
trackingFragment = new TrackingFragment();
|
||||
}
|
||||
|
||||
lastViewPagerItem = savedInstanceState.getInt(SIS_LAST_VIEWPAGER_ITEM);
|
||||
lastSpeedIndicatorText = savedInstanceState.getString(SIS_LAST_SPEED_TEXT);
|
||||
lastCompassIndicatorText = savedInstanceState.getString(SIS_LAST_COMPASS_TEXT);
|
||||
} else {
|
||||
trackingFragment = new TrackingFragment();
|
||||
}
|
||||
@@ -125,6 +137,7 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int arg0) {
|
||||
lastViewPagerItem = arg0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -140,23 +153,17 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
ServiceHelper.getInstance().startTrackingService(this, eventId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
// HudFragment hudFragment = (HudFragment)
|
||||
// getSupportFragmentManager().findFragmentById(R.id.hud_content_frame);
|
||||
// hudFragment.layoutOverlay();
|
||||
//
|
||||
// hudFragment.setSpeedOverGround(0);
|
||||
// hudFragment.setHeading(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
|
||||
outState.putInt(SIS_LAST_VIEWPAGER_ITEM, lastViewPagerItem);
|
||||
outState.putString(SIS_LAST_SPEED_TEXT, lastSpeedIndicatorText);
|
||||
outState.putString(SIS_LAST_COMPASS_TEXT, lastCompassIndicatorText);
|
||||
|
||||
if (trackingFragment.isAdded()) {
|
||||
getSupportFragmentManager().putFragment(outState, SIS_TRACKING_FRAGMENT, trackingFragment);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -219,7 +226,9 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
{
|
||||
mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
|
||||
}
|
||||
|
||||
mPager.setAdapter(mPagerAdapter);
|
||||
mPager.setCurrentItem(lastViewPagerItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -367,14 +376,6 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
return 3;
|
||||
}
|
||||
|
||||
// public StopTrackingButtonFragment getStopTrackingButtonFragment() {
|
||||
// if (stbFragment != null && stbFragment.isAdded())
|
||||
// {
|
||||
// return stbFragment;
|
||||
// }
|
||||
// else return null;
|
||||
// }
|
||||
|
||||
public CompassFragment getCompassFragment() {
|
||||
if (cFragment != null && cFragment.isAdded())
|
||||
{
|
||||
|
||||
+15
-17
@@ -7,11 +7,11 @@ import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sap.sailing.android.tracking.app.R;
|
||||
import com.sap.sailing.android.tracking.app.ui.activities.TrackingActivity;
|
||||
|
||||
public class CompassFragment extends BaseFragment {
|
||||
|
||||
private String TAG = CompassFragment.class.getName();
|
||||
private final String SIS_HEADING_TEXTIVEW = "CompassFragmentHeadingTextView";
|
||||
//private String TAG = CompassFragment.class.getName();
|
||||
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
@@ -25,6 +25,12 @@ public class CompassFragment extends BaseFragment {
|
||||
{
|
||||
TextView headingText = (TextView) getActivity().findViewById(R.id.compass_bearing_text_view);
|
||||
headingText.setText(String.valueOf(Math.round(heading)) + "°");
|
||||
|
||||
TrackingActivity activity = (TrackingActivity) getActivity();
|
||||
|
||||
if (activity != null) {
|
||||
activity.lastCompassIndicatorText = headingText.getText().toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,20 +38,12 @@ public class CompassFragment extends BaseFragment {
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
TextView headingText = (TextView)getActivity().findViewById(R.id.compass_bearing_text_view);
|
||||
if (savedInstanceState != null)
|
||||
{
|
||||
headingText.setText(savedInstanceState.getString(SIS_HEADING_TEXTIVEW));
|
||||
|
||||
TrackingActivity activity = (TrackingActivity) getActivity();
|
||||
if (activity != null) {
|
||||
headingText.setText(activity.lastCompassIndicatorText);
|
||||
} else {
|
||||
headingText.setText("");
|
||||
}
|
||||
else
|
||||
{
|
||||
headingText.setText("---°");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
TextView headingText = (TextView)getActivity().findViewById(R.id.compass_bearing_text_view);
|
||||
outState.putString(SIS_HEADING_TEXTIVEW, headingText.getText().toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
+22
-25
@@ -11,22 +11,20 @@ import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.sap.sailing.android.tracking.app.R;
|
||||
import com.sap.sailing.android.tracking.app.ui.activities.TrackingActivity;
|
||||
|
||||
public class SpeedFragment extends BaseFragment {
|
||||
|
||||
private String TAG = SpeedFragment.class.getName();
|
||||
private final String SIS_SPEED_TEXTIVEW = "SpeedFragmentSpeedTextView";
|
||||
//private String TAG = SpeedFragment.class.getName();
|
||||
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
ViewGroup view = (ViewGroup) inflater.inflate(R.layout.fragment_speed, container, false);
|
||||
ViewGroup view = (ViewGroup) inflater.inflate(R.layout.fragment_speed, container, false);
|
||||
return view;
|
||||
}
|
||||
|
||||
public void setSpeed(float speedInMetersPerSecond)
|
||||
{
|
||||
if (isAdded())
|
||||
{
|
||||
public void setSpeed(float speedInMetersPerSecond) {
|
||||
if (isAdded()) {
|
||||
float speedInKnots = speedInMetersPerSecond * 1.9438444924574f;
|
||||
|
||||
NumberFormat df = DecimalFormat.getInstance();
|
||||
@@ -34,30 +32,29 @@ public class SpeedFragment extends BaseFragment {
|
||||
df.setMaximumFractionDigits(2);
|
||||
df.setRoundingMode(RoundingMode.HALF_UP);
|
||||
String formattedSpeed = df.format(speedInKnots);
|
||||
|
||||
|
||||
TextView speedText = (TextView) getActivity().findViewById(R.id.speed_text_view);
|
||||
speedText.setText(formattedSpeed + "kn");
|
||||
TrackingActivity activity = (TrackingActivity) getActivity();
|
||||
|
||||
if (activity != null) {
|
||||
activity.lastSpeedIndicatorText = speedText.getText().toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
TextView speedText = (TextView)getActivity().findViewById(R.id.speed_text_view);
|
||||
if (savedInstanceState != null)
|
||||
{
|
||||
speedText.setText(savedInstanceState.getString(SIS_SPEED_TEXTIVEW));
|
||||
}
|
||||
else
|
||||
{
|
||||
speedText.setText("--kn");
|
||||
|
||||
TextView speedText = (TextView) getActivity().findViewById(R.id.speed_text_view);
|
||||
|
||||
TrackingActivity activity = (TrackingActivity) getActivity();
|
||||
if (activity != null) {
|
||||
speedText.setText(activity.lastSpeedIndicatorText);
|
||||
} else {
|
||||
speedText.setText("");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
TextView speedText = (TextView)getActivity().findViewById(R.id.speed_text_view);
|
||||
outState.putString(SIS_SPEED_TEXTIVEW, speedText.getText().toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-4
@@ -14,6 +14,8 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.android.gms.internal.mp;
|
||||
import com.google.android.gms.internal.mv;
|
||||
import com.sap.sailing.android.shared.logging.ExLog;
|
||||
import com.sap.sailing.android.tracking.app.BuildConfig;
|
||||
import com.sap.sailing.android.tracking.app.R;
|
||||
@@ -31,7 +33,6 @@ public class TrackingFragment extends BaseFragment {
|
||||
static final String SIS_GPS_ACCURACY = "instanceStateGpsAccuracy";
|
||||
static final String SIS_GPS_UNSENT_FIXES = "instanceStateGpsUnsentFixes";
|
||||
|
||||
|
||||
private AppPreferences prefs;
|
||||
private long lastGPSQualityUpdate;
|
||||
|
||||
@@ -247,11 +248,8 @@ public class TrackingFragment extends BaseFragment {
|
||||
{
|
||||
unsentGpsFixesTextView.setText(String.valueOf(count));
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user