Android 如何将片段目标绑定到底部导航栏中的菜单项?
我想在android中使用导航和目的地系统,所以当点击底部导航栏中的菜单项时,它会转到一个片段 我创建了3个空片段,并按照本指南将项目绑定到片段上,但当我单击菜单项时,什么也没有发生。 我确保菜单中的项目id也与片段具有相同的id。 我怎样才能做到这一点 以下是我的活动:Android 如何将片段目标绑定到底部导航栏中的菜单项?,android,Android,我想在android中使用导航和目的地系统,所以当点击底部导航栏中的菜单项时,它会转到一个片段 我创建了3个空片段,并按照本指南将项目绑定到片段上,但当我单击菜单项时,什么也没有发生。 我确保菜单中的项目id也与片段具有相同的id。 我怎样才能做到这一点 以下是我的活动: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCre
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navController = findNavController(R.id.nav_host_fragment)
bottom_navigation
.setupWithNavController(navController)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val navController = findNavController(R.id.nav_host_fragment)
return item.onNavDestinationSelected(navController) || super.onOptionsItemSelected(item)
}
}
这是活动xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout 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"
android:id="@+id/coordinator"
tools:context=".MainActivity">
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/navigation" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/colorPrimary"
app:itemIconTint="@color/colorPrimaryDark"
app:itemTextColor="@color/colorPrimaryDark"
app:menu="@menu/bottom_navigation_menu" />
这是导航栏的底部菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/fragment_home"
android:icon="@drawable/ic_home_24px"
android:title="Home" />
<item
android:id="@+id/nav_search"
android:icon="@drawable/ic_search_24px"
android:title="Search" />
<item
android:id="@+id/nav_profile"
android:icon="@drawable/ic_face_24px"
android:title="Profile" />
Navigation.xml代码:
<?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/navigation"
app:startDestination="@id/homeFragment">
<fragment
android:id="@+id/homeFragment"
android:name="com.puntogris.herewego.home.HomeFragment"
android:label="fragment_home"
tools:layout="@layout/fragment_home" >
<action
android:id="@+id/action_homeFragment_to_profileFragment"
app:destination="@id/profileFragment" />
</fragment>
<fragment
android:id="@+id/profileFragment"
android:name="com.puntogris.herewego.profile.ProfileFragment"
android:label="fragment_profile"
tools:layout="@layout/fragment_profile" >
<action
android:id="@+id/action_profileFragment_to_searchFragment"
app:destination="@id/searchFragment" />
</fragment>
<fragment
android:id="@+id/searchFragment"
android:name="com.puntogris.herewego.search.SearchFragment"
android:label="fragment_search"
tools:layout="@layout/fragment_search" />
您的
android:id
s不匹配
您的菜单XML使用android:id=“@+id/fragment\u home”
,但您的导航XML使用android:id=“@+id/homeframent”
这些名称必须相同。例如,您可以将菜单XML更改为
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/homeFragment"
android:icon="@drawable/ic_home_24px"
android:title="Home" />
<item
android:id="@+id/searchFragment"
android:icon="@drawable/ic_search_24px"
android:title="Search" />
<item
android:id="@+id/profileFragment"
android:icon="@drawable/ic_face_24px"
android:title="Profile" />
</menu>
您可以包含导航XML吗?当然可以,给您