Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 导航组件不响应的底部导航栏_Android_Kotlin_Navigation_Bottomnavigationview - Fatal编程技术网

Android 导航组件不响应的底部导航栏

Android 导航组件不响应的底部导航栏,android,kotlin,navigation,bottomnavigationview,Android,Kotlin,Navigation,Bottomnavigationview,因此,我使用带有菜单项的导航组件来创建底部导航栏。但是,当我完全运行了无错误代码并且菜单项完全没有响应时,问题就会出现。单击时,它只在一个片段中保持停滞状态,而不会导航到其他片段 以下是navhost片段所在的活动: class HomeActivity : AppCompatActivity() { private lateinit var navController: NavController private val binding: ActivityHomeBinding by laz

因此,我使用带有菜单项的导航组件来创建底部导航栏。但是,当我完全运行了无错误代码并且菜单项完全没有响应时,问题就会出现。单击时,它只在一个片段中保持停滞状态,而不会导航到其他片段

以下是navhost片段所在的活动:

class HomeActivity : AppCompatActivity() {

private lateinit var navController: NavController
private val binding: ActivityHomeBinding by lazy {
    ActivityHomeBinding.inflate(layoutInflater)
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(binding.root)
    setUpBottomNavigation()
}

private fun setUpBottomNavigation() {
    val navHostFragment =
        supportFragmentManager.findFragmentById(R.id.fragmentContainerView) as NavHostFragment
    navController = navHostFragment.findNavController()
    binding.bottomNavigation.setupWithNavController(navController)

}
}

以下是xml:

<androidx.constraintlayout.widget.ConstraintLayout 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=".Home.HomeActivity">

<androidx.fragment.app.FragmentContainerView
    android:id="@+id/fragmentContainerView"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="409dp"
    android:layout_height="673dp"
    app:defaultNavHost="true"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:navGraph="@navigation/nav_graph_without_splash" />

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="411dp"
    android:layout_height="wrap_content"
    android:visibility="visible"
    app:backgroundTint="@color/lightGray"
    app:elevation="8dp"
    app:itemIconTint="@color/bottom_nav_tint"
    app:itemTextColor="@color/bottom_nav_tint"
    app:labelVisibilityMode="labeled"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:menu="@menu/bottom_menu" />

首先在活动文件中执行此操作

class LoginFragment : Fragment() {
private var _binding: FragmentLoginBinding? = null
private val binding get() = _binding!!

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    _binding = FragmentLoginBinding.inflate(inflater, container, false)

    binding.tohomepagebutton.setOnClickListener {

        /*
        since you are using nav graph instead of using intents to switch between activities,
        you can invoke the actions on the navgraph to navigate to the preferred destination
         to understand better check https://medium.com/swlh/android-navigation-component-part-1-6191323eaf39
         https://developer.android.com/guide/navigation/navigation-getting-started*/

        NavHostFragment.findNavController(this).navigate(R.id.action_loginFragment_to_home2)

    }

    return binding.root

}

override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}

}

那么,您的导航图是否具有与菜单项相同ID的目的地?请包含导航图XML文件
class LoginFragment : Fragment() {
private var _binding: FragmentLoginBinding? = null
private val binding get() = _binding!!

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    _binding = FragmentLoginBinding.inflate(inflater, container, false)

    binding.tohomepagebutton.setOnClickListener {

        /*
        since you are using nav graph instead of using intents to switch between activities,
        you can invoke the actions on the navgraph to navigate to the preferred destination
         to understand better check https://medium.com/swlh/android-navigation-component-part-1-6191323eaf39
         https://developer.android.com/guide/navigation/navigation-getting-started*/

        NavHostFragment.findNavController(this).navigate(R.id.action_loginFragment_to_home2)

    }

    return binding.root

}

override fun onDestroyView() {
    super.onDestroyView()
    _binding = null
}