如何解决有没有一种方法{supportFragmentManager.beginTransactionhide/ show在BottomNavigationView中使用导航组件? 我要保存片段状态是这种情况我只想要一个nav-graph.xml 下面的代码
我想在移动bottomNavigation菜单时保存片段状态(导航目标)。 而且我不想使用Backstack
所以我写了这个
app:defaultNavHost="false"
如果我改变了
app:defaultNavHost="true"
当backpress返回homeFragemnt时,它就可以满足我的需求
我不要。
我要保存片段状态
当我不使用导航组件实现时,使用了beginTransaction的hide()/ show()。效果很好...
也许我曾经使用过viewmodel或saveState(活动,片段或navcontroller),但我不知道该怎么做。
==this is one set log when click bottom-nav-menu(bind FragmentA)==
E/FragmentA: onAttach:
E/FragmentA: onCreate:
E/FragmentA: onDestroy:
E/FragmentA: onDetach:
====
是这种情况
我只想要一个nav-graph.xml
这只是show()/ hide()的实现
下面的代码
- MainActivity.kt
- activity_main.xml
- nav_main.xml
- bottom_nav_menu
MainActivity.kt
lateinit var navController : NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = DataBindingUtil.setContentView<ActivityMainBinding>(this,R.layout.activity_main)
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.main_nav_host) as NavHostFragment
navController = navHostFragment.navController
binding.bottomNavigation.setupWithNavController(navController)
}
activity_main.xml
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/main_nav_host"
android:layout_width="match_parent"
android:layout_height="0dp"
android:name="androidx.navigation.fragment.NavHostFragment"
app:defaultNavHost="false"
app:navGraph="@navigation/nav_main"
app:layout_constraintBottom_toTopOf="@+id/bottom_navigation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:menu="@menu/bottom_nav_menu" />
</androidx.constraintlayout.widget.ConstraintLayout>
nav_main.xml
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/nav_main"
app:startDestination="@id/fragmentA">
<fragment
android:id="@+id/fragmentA"
android:name="com.Box.sample_bottomnav_navigation.bottom_fr.FragmentA"
android:label="FragmentA" />
<fragment
android:id="@+id/fragmentB"
android:name="com.Box.sample_bottomnav_navigation.bottom_fr.FragmentB"
android:label="FragmentB" />
</navigation>
bottom_nav_menu
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/fragmentA"
android:enabled="true"
android:icon="@drawable/ic_menu_1_on"
android:title="A" />
<item
android:id="@+id/fragmentB"
android:enabled="true"
android:icon="@drawable/ic_menu_1_on"
android:title="B" />
</menu>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。