Demo sub-bundle pattern for reliable instance state.

Change-Id: Id01e8aa28466572000e154c279887441e04254bf
This commit is contained in:
Stephen McDonald 2016-10-21 12:22:05 +11:00
parent 5da6818149
commit 263f35e10b
2 changed files with 41 additions and 8 deletions

View File

@ -33,17 +33,39 @@ public class RawMapViewDemoActivity extends AppCompatActivity implements OnMapRe
private MapView mMapView;
private static final String MAPVIEW_BUNDLE_KEY = "MapViewBundleKey";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.raw_mapview_demo);
// *** IMPORTANT ***
// MapView requires that the Bundle you pass contain _ONLY_ MapView SDK
// objects or sub-Bundles.
Bundle mapViewBundle = null;
if (savedInstanceState != null) {
mapViewBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY);
}
mMapView = (MapView) findViewById(R.id.map);
mMapView.onCreate(savedInstanceState);
mMapView.onCreate(mapViewBundle);
mMapView.getMapAsync(this);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Bundle mapViewBundle = outState.getBundle(MAPVIEW_BUNDLE_KEY);
if (mapViewBundle == null) {
mapViewBundle = new Bundle();
outState.putBundle(MAPVIEW_BUNDLE_KEY, mapViewBundle);
}
mMapView.onSaveInstanceState(mapViewBundle);
}
@Override
protected void onResume() {
super.onResume();
@ -85,9 +107,4 @@ public class RawMapViewDemoActivity extends AppCompatActivity implements OnMapRe
mMapView.onLowMemory();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mMapView.onSaveInstanceState(outState);
}
}

View File

@ -34,6 +34,8 @@ public class StreetViewPanoramaViewDemoActivity extends AppCompatActivity {
private StreetViewPanoramaView mStreetViewPanoramaView;
private static final String STREETVIEW_BUNDLE_KEY = "StreetViewBundleKey";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -47,7 +49,14 @@ public class StreetViewPanoramaViewDemoActivity extends AppCompatActivity {
addContentView(mStreetViewPanoramaView,
new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
mStreetViewPanoramaView.onCreate(savedInstanceState);
// *** IMPORTANT ***
// StreetViewPanoramaView requires that the Bundle you pass contain _ONLY_
// StreetViewPanoramaView SDK objects or sub-Bundles.
Bundle mStreetViewBundle = null;
if (savedInstanceState != null) {
mStreetViewBundle = savedInstanceState.getBundle(STREETVIEW_BUNDLE_KEY);
}
mStreetViewPanoramaView.onCreate(mStreetViewBundle);
}
@Override
@ -71,6 +80,13 @@ public class StreetViewPanoramaViewDemoActivity extends AppCompatActivity {
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mStreetViewPanoramaView.onSaveInstanceState(outState);
Bundle mStreetViewBundle = outState.getBundle(STREETVIEW_BUNDLE_KEY);
if (mStreetViewBundle == null) {
mStreetViewBundle = new Bundle();
outState.putBundle(STREETVIEW_BUNDLE_KEY, mStreetViewBundle);
}
mStreetViewPanoramaView.onSaveInstanceState(mStreetViewBundle);
}
}