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