удалить все фрагменты, кроме SupportMapFragment - PullRequest
0 голосов
/ 08 января 2019

У меня есть SupportMapFragment, а затем у меня есть фрагмент (назовем его Fragment A), который помещается в контейнер, определенный в том же XML-файле, что и SupportMapFragment android:id="@+id/fragmentContainer">


XML-код моей MapsActivity

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:id="@+id/fragmentContainer">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:id="@+id/map"
              tools:context=".MapsActivity"
              android:name="com.google.android.gms.maps.SupportMapFragment"
              android:layout_below="@id/place_autocomplete_fragment"
              android:layout_above="@id/bottom_navigation"
    />
</RelativeLayout>

Я пытаюсь удалить Фрагмент А, чтобы я мог снова увидеть свою Карту, но все, что я пытаюсь удалить Фрагмент А, похоже, также удаляет фрагмент Карты, поэтому моя карта «заморожена», я могу не прокручивай.

Как я пытаюсь удалить другие фрагменты

when(item.itemId){
    R.id.nav_map -> {
        val fragmentManager= this@MapsActivity.supportFragmentManager
        val fragments = fragmentManager.fragments

        for (fragment in supportFragmentManager.fragments) {
            if (fragment is SupportMapFragment) {
                continue
            } else if (fragment != null) {
                supportFragmentManager.beginTransaction().remove(fragment).commit()
            }
        }
        return@OnNavigationItemSelectedListener true
    }
    // replace the fragment A into the fragment container
    R.id.nav_A -> {
        Log.d(TAG, "Fragment A icon pressed")
        replaceFragment(FragmentA())
        return@OnNavigationItemSelectedListener true
    }
}
...