Home > Software engineering >  The Home fragment rises above the rest
The Home fragment rises above the rest

Time:01-14

when I switch between the fragment I created, the home fragment is not deleted, it writes on the others.

please i have an issue. I am using bottom navigation and nav controller. once I switch fragments, the home fragment keeps showing under the rest

`
class FeedActivity : AppCompatActivity() {

    private lateinit var bottomNavigationView: BottomNavigationView


 //loadFragment(HomeFragment())
        bottomNavigationView = findViewById(R.id.bottom_navigation) as BottomNavigationView
        bottomNavigationView.setOnItemSelectedListener {
            when (it.itemId) {
                R.id.nav_home -> {
                    loadFragment(HomeFragment())
                    true
                }
                R.id.nav_search -> {
                    loadFragment(SearchFragment())
                    true
                }

                R.id.nav_add -> {
                    loadFragment(AddFragment())
                    true
                }
                R.id.nav_notifications -> {
                    loadFragment(NotificationsFragment())
                    true
                }
                R.id.nav_profile -> {
                    loadFragment(ProfileFragment())
                    true
                }
                else -> throw IllegalStateException("Someone forgot to add enough fragment cases to 'when' clause!")
            }
        }


        }
    private  fun loadFragment(fragment: Fragment){
        val transaction = supportFragmentManager.beginTransaction()
        transaction.replace(R.id.cercevekapsayici,fragment)
        transaction.commit()
    }`

`<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".view.FeedActivity">

    <FrameLayout
        android:id="@ id/cercevekapsayici"
        android:layout_above="@id/bottom_appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@ id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.google.android.material.appbar.AppBarLayout
        android:id="@ id/bottom_appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" >

        <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@ id/bottom_navigation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?android:attr/windowBackground"
            app:itemIconTint="@color/cardview_dark_background"
            app:labelVisibilityMode="unlabeled"
            app:menu="@menu/bottom_navigation" />

    </com.google.android.material.appbar.AppBarLayout>

[[enter image description here](https://i.stack.imgur.com/3D2Z8.png)](https://i.stack.imgur.com/llwZ5.png)`

I want the recyclerview to disappear when I switch to other fragments.

CodePudding user response:

You can make your FramLayout height match parent :

    <FrameLayout
       android:id="@ id/cercevekapsayici"
       android:layout_above="@id/bottom_appbar"
       android:layout_width="match_parent"
       android:layout_height="match_parent" />

CodePudding user response:

Your loadFragment function replaces whatever Fragment is attached to R.id.cercevekapsayici, which is a FrameLayout that contains your fragments. But your RecyclerView is part of your main layout, so it will always be there whatever you attach to R.id.cercevekapsayici.

If you want it to be replaced, put it in a Fragment and add it to that FrameLayout - then it'll be removed when you switch to a different fragment.

CodePudding user response:

Maybe you need to give background to the other fragments

  • Related