我有一个问题,底部导航视图。我有一个3碎片:MoviesFragment(首页片段),MovieInfoFragment和配置文件片段。它的工作时,使用底部导航视图MoviesFragment-〉配置文件片段ProfileFragment-〉MoviesFragment但不工作时,我从MovieInfoFragment导航到MoviesFragment,我不知道为什么。请帮助
底部导航菜单
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/moviesFragment"
android:icon="@drawable/ic_home"
android:title="@string/home" />
<item
android:id="@+id/profileFragment"
android:icon="@drawable/ic_profile"
android:title="@string/profile" />
</menu>
导航图
<navigation 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:id="@+id/nav_graph"
app:startDestination="@id/moviesFragment">
<fragment
android:id="@+id/moviesFragment"
android:name="com.sideki.imdb_app.ui.movies_list.MoviesFragment"
android:label="fragment_movies"
tools:layout="@layout/fragment_movies">
<action
android:id="@+id/to_movieInfoFragment"
app:destination="@id/movieInfoFragment" />
</fragment>
<fragment
android:id="@+id/movieInfoFragment"
android:name="com.sideki.imdb_app.ui.movie_info.MovieInfoFragment"
android:label="MovieInfoFragment">
<argument
android:name="movieId"
app:argType="string" />
</fragment>
<fragment
android:id="@+id/profileFragment"
android:name="com.sideki.imdb_app.data.api.ProfileFragment"
android:label="ProfileFragment" />
</navigation>
类主要活动:片段放射性(){
private lateinit var binding: ActivityMainBinding
private lateinit var navController: NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragmentNavHost)
navController = navHostFragment!!.findNavController()
binding.bottomNavigation.setupWithNavController(navController)
}
也许问题隐藏在堆栈中?
1条答案
按热度按时间zbdgwd5y1#
我认为问题是,当您从MovieInfoFragment导航到MoviesFragment时,MovieInfoFragment仍然在后堆栈上,因此按下“后退”按钮将使用户返回到MovieInfoFragment,而不是MoviesFragment。
在导航到MoviesFragment时,尝试使用
popBackStack()
。