如何在 Kotlin 的 Fragment 中隐藏属于 Activity 的 FloatingActionButton?

How to hide the FloatingActionButton that is part of the Activity in the Fragment in Kotlin?

在我的 'HomeActivity' 中,我有一个 FloatingActionButton 和四个 Fragments。我希望 FloatingActionButton 仅在 'fragment1' 和 'fragment2' 中显示,使其隐藏在 'fragment3' 和 'fragment4' 中。我试过了,但没有用。

以下是我在 'HomeActivity'

xml 文件中的内容
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottom_appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom">

        <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/nav_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginEnd="16dp"
            android:background="@android:color/transparent"
            app:menu="@menu/bottom_nav_menu" />

    </com.google.android.material.bottomappbar.BottomAppBar>

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/fab_one"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_hide_category"
            app:layout_anchor="@id/bottom_appbar"/>

    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="50dp"
        app:defaultNavHost="true"
        app:navGraph="@navigation/mobile_navigation"
        app:layout_anchor="@id/bottom_appbar"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

我在 'HomeActivity'

中添加了以下代码
fun hideFabOne(){
    binding.fabOne.hide()
}

和下面 fragmentonCreateView 中我想隐藏 FAB 的代码。但是,它没有用。

HomeActivity().hideFabOne()

看起来您正在创建 activity 的新实例,试试

(requireActivity() as HomeActivity).hideFabOne()

*添加评论 您可以修改 hideFabOne() 类似

fun hideFabOne(){
    binding.fabOne.visiblity = if( binding.fabOne.isVisible ) View.VISIBLE else View.GONE
}