Navigation Component与FragmentContainerView配合使用异常问题求助及解决记录
我最近在尝试用Navigation Component实现两个Fragment的跳转功能——从展示照片列表的PhotosFragment点击照片跳转到PhotoDetailFragment,过程中踩了不少坑,这里记录下问题和解决办法:
需求场景
- 仅通过Navigation Component实现两个Fragment的切换:
PhotosFragment(照片列表)和PhotoDetailFragment(照片详情) - 点击
PhotosFragment中的任意照片,携带imageUrl、userName、tags三个参数跳转到详情页 - 已经按照Android Studio推荐使用
FragmentContainerView来配置导航容器
我的导航图配置(nav_graph.xml)
<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/photosFragment"> <fragment android:id="@+id/photosFragment" android:name="gallery.app.architecture.ui.photos.PhotosFragment" tools:layout="@layout/item_photo"> <action android:id="@+id/action_photosFragment_to_photoDetailFragment" app:destination="@id/photoDetailFragment" app:enterAnim="@anim/slide_in_right" app:exitAnim="@anim/slide_out_left" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right"/> </fragment> <fragment android:id="@+id/photoDetailFragment" android:name="gallery.app.architecture.ui.photos.PhotoDetailFragment" tools:layout="@layout/item_photo"> <argument android:name="imageUrl" app:argType="string"/> <argument android:name="userName" app:argType="string"/> <argument android:name="tags" app:argType="string"/> </fragment> </navigation>
遇到的问题
单独测试每个Fragment时功能都正常,但集成Navigation Component后跳转完全没反应,尝试了多种方法排查(包括检查相关类和activity_main.xml配置)都没解决。
最终解决办法
经过反复排查,发现问题出在MainActivity中同时使用Navigation和Data Binding导致功能异常,调整两者的集成方式后,Navigation Component的跳转功能恢复正常。
内容的提问来源于stack exchange,提问作者Zar E Ahmer
相关产品推荐
相关产品推荐

