diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2017-11-20 13:17:12 +0100 |
---|---|---|
committer | Tobrun <tobrun.van.nuland@gmail.com> | 2017-11-21 11:54:43 +0100 |
commit | e905729f164ecccd6dbd5e779e245220c567f521 (patch) | |
tree | 7c9ac392caffb55bcf6e8ae34434df155176eb61 | |
parent | dda87bbecd44a16ddc5b4dcb7e4bbf670376b39f (diff) | |
download | qtlocation-mapboxgl-upstream/10117-fragment-crash.tar.gz |
[android] - update bottom sheet example with popable fragment backstackupstream/10117-fragment-crash
-rw-r--r-- | platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java index 2c83f6d908..d12f761262 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/BottomSheetActivity.java @@ -7,6 +7,7 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.BottomSheetBehavior; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; @@ -35,7 +36,6 @@ public class BottomSheetActivity extends AppCompatActivity { private static final String TAG_BOTTOM_FRAGMENT = "com.mapbox.mapboxsdk.fragment.tag.bottom"; private boolean bottomSheetFragmentAdded; - private int mapViewCounter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -78,25 +78,29 @@ public class BottomSheetActivity extends AppCompatActivity { @Override public void onBackPressed() { - super.onBackPressed(); - if (mapViewCounter > 0) { - mapViewCounter--; - Toast.makeText(this, "Amount of main map fragments: " + mapViewCounter, Toast.LENGTH_SHORT).show(); + FragmentManager fragmentManager = getSupportFragmentManager(); + + if (fragmentManager.getBackStackEntryCount() > 0) { + fragmentManager.popBackStack(); + } else { + super.onBackPressed(); } } private void addMapFragment() { - FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); - MainMapFragment mainMapFragment = MainMapFragment.newInstance(mapViewCounter); - if (mapViewCounter == 0) { + FragmentManager fragmentManager = getSupportFragmentManager(); + int fragmentCount = fragmentManager.getBackStackEntryCount(); + + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); + MainMapFragment mainMapFragment = MainMapFragment.newInstance(fragmentCount); + if (fragmentCount == 0) { fragmentTransaction.add(R.id.fragment_container, mainMapFragment, TAG_MAIN_FRAGMENT); } else { fragmentTransaction.replace(R.id.fragment_container, mainMapFragment, TAG_MAIN_FRAGMENT); } - fragmentTransaction.addToBackStack(null); + fragmentTransaction.addToBackStack(String.valueOf(mainMapFragment.hashCode())); fragmentTransaction.commit(); - mapViewCounter++; - Toast.makeText(this, "Amount of main map fragments: " + mapViewCounter, Toast.LENGTH_SHORT).show(); + Toast.makeText(this, "Amount of main map fragments: " + (fragmentCount + 1), Toast.LENGTH_SHORT).show(); } private void toggleBottomSheetMapFragment() { |