我的应用程序中有4个片段,底部导航栏中有3个图标.当我按下不在底部导航栏中的片段时,导航 struct 就会崩溃.

首先,当我点击主页上的一张食物照片时,我会切换到细节片段.然后我用按钮切换到篮子碎片.我不能从这里切换到主页片段.当我单击底部导航栏中的主页图标时,我会切换到先前打开的详细信息片段.为了解决这个问题,我处理了活动中的所有项目点击,但仍然没有解决.

detail fragment and can't navigate home fragment

主要活动

@AndroidEntryPoint
class FoodOrderingActivity : AppCompatActivity() {

    private lateinit var binding: ActivityFoodOrderingBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityFoodOrderingBinding.inflate(layoutInflater)
        setContentView(binding.root)


        val navHostFragment = supportFragmentManager
            .findFragmentById(R.id.food_ordering_fragment_container) as NavHostFragment

        NavigationUI.setupWithNavController(binding.bottomNavigationView, navHostFragment.navController)

        binding.bottomNavigationView.setOnItemReselectedListener{
            when(it.itemId) {
                R.id.foodListFragment -> navHostFragment.findNavController().navigate(R.id.foodListFragment)
                //R.id.foodDetailFragment -> navHostFragment.findNavController().navigate(R.id.foodDetailFragment)
                R.id.basketFragment -> navHostFragment.findNavController().navigate(R.id.basketFragment)
                R.id.favoriteFoodFragment -> navHostFragment.findNavController().navigate(R.id.favoriteFoodFragment)
            }
        }
    }
}

导航图

<?xml version="1.0" encoding="utf-8"?>
<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/food_ordering_activity_nav_graph"
    app:startDestination="@id/foodListFragment">

    <fragment
        android:id="@+id/foodListFragment"
        android:name="com.omersungur.foodorderingapp.ui.fragment.food_list.FoodListFragment"
        android:label="fragment_food_list"
        tools:layout="@layout/fragment_food_list" >
        <action
            android:id="@+id/action_foodListFragment_to_foodDetailFragment"
            app:destination="@id/foodDetailFragment" />
        <action
            android:id="@+id/action_foodListFragment_to_basketFragment"
            app:destination="@id/basketFragment" />
    </fragment>
    <fragment
        android:id="@+id/foodDetailFragment"
        android:name="com.omersungur.foodorderingapp.ui.fragment.food_detail.FoodDetailFragment"
        android:label="fragment_food_detail"
        tools:layout="@layout/fragment_food_detail" >
        <action
            android:id="@+id/action_foodDetailFragment_to_basketFragment"
            app:destination="@id/basketFragment"
            app:popUpTo="@id/foodDetailFragment"
            app:popUpToInclusive="true" />
        <argument
            android:name="food"
            app:argType="com.omersungur.foodorderingapp.model.food.Food" />
    </fragment>
    <fragment
        android:id="@+id/basketFragment"
        android:name="com.omersungur.foodorderingapp.ui.fragment.basket.BasketFragment"
        android:label="fragment_basket"
        tools:layout="@layout/fragment_basket" >
        <action
            android:id="@+id/action_basketFragment_to_foodListFragment"
            app:destination="@id/foodListFragment"
            app:popUpTo="@id/foodListFragment" />
    </fragment>
    <fragment
        android:id="@+id/favoriteFoodFragment"
        android:name="com.omersungur.foodorderingapp.ui.fragment.favorite.FavoriteFoodFragment"
        android:label="fragment_favorite_food"
        tools:layout="@layout/fragment_favorite_food" />
</navigation>

底部导航菜单.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/foodListFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:icon="@drawable/ic_home"
        android:title="Home" />

    <item
        android:id="@+id/favoriteFoodFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:icon="@drawable/ic_favorite"
        android:title="Favorite" />

    <item
        android:id="@+id/basketFragment"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:icon="@drawable/ic_basket"
        android:title="Basket" />

</menu>

我怎么才能解决这个问题呢?是关于后台堆栈的吗?

推荐答案

我找到了解决问题的办法.我用了setOnItem**ReselectedListener我应该用setOnItem**SelectedListener.

Android相关问答推荐

使用Kotlin的SD卡

如何禁用Android 34+版的TileService,但保留以前的版本?

如何在Jetpack Compose android中使用导航

判断文本视图是否为单行

如何在同一行中滚动自定义布局和惰性列,就好像它们是一个组件一样

从 Jetpack Compose 中的图像中删除默认高度

如何在jetpack compose中使可组合的屏幕zoom 到不同的手机(屏幕)尺寸?

当 Firebase Firestore 发生变化时,Kotlin ViewModel 不会更新

列表更改时,RecyclerView 中的列表不会更新

如何用jetpack compose实现垂直李克特量表

Android:ActivityCompat.requestPermissions 不显示弹窗(Android 13,targetSdkVersion=33)

我该怎么做文本计时器

如何像 XML 一样在 Compose Android Studio 中折叠/展开小部件代码区域/区域

如何在屏幕旋转或系统主题更改后将光标移动到 TextField 的末尾并保持键盘显示?

如何限制键盘输入键不允许在下一行输入(Android Jetpack Compose 中的 TextField)

在 Kotlin 客户端应用程序中发送 FCM 推送通知 - Firebase 云消息传递

如何使用jetpack compose实现布局,其中图标在列布局上是绝对位置

如何在 flow.stateIn() 之后从流中的另一个函数发出emits ?

如何将私有 mutableStateOf 分配给 Android Jetpack 中的 State 变量?

在使用 Retrofit 和 Room 时,我是否需要提及协程调度程序?