我遇到了一个问题,当深度链接到第二级片段时,导航UI没有选择正确的底部导航视图项。
我的意思是:
当我深入链接到fragment\u discover\u landing时会发生什么?选择默认的底部导航项目。
是否有方法通知底部导航适配器在此实例中应选择哪个项目?
这是我的导航图:
<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/mobile_navigation"
app:startDestination="@id/fragment_home">
<fragment
android:id="@+id/fragment_home"
android:name="com.my.app.fragments.HomeFragment"
android:label="@string/nav_home"
tools:layout="@layout/home_fragment">
<action
android:id="@+id/action_fragment_home_to_fragment_browse_categories"
app:destination="@id/fragment_browse_categories" />
</fragment>
<fragment
android:id="@+id/fragment_browse_categories"
android:name="com.my.app.fragments.BrowseCategoriesFragment"
android:label="@string/discover_default_header"
tools:layout="@layout/browse_categories_fragment" />
<fragment
android:id="@+id/fragment_reading_lists"
android:name="com.my.app.fragments.ReadingListHubFragment"
android:label="@string/nav_readinglists"
tools:layout="@layout/readinglists_landing">
<action
android:id="@+id/action_fragment_reading_lists_to_fragment_discover_landing"
app:destination="@id/fragment_discover_landing" />
</fragment>
<fragment
android:id="@+id/fragment_browse_library"
android:name="com.my.app.fragments.BrowseLibraryFragment"
android:label="@string/nav_library"
tools:layout="@layout/fragment_mylibrary_all" />
<fragment
android:id="@+id/fragment_downloads"
android:name="com.my.app.fragments.DownloadsFragment"
android:label="@string/nav_downloads"
tools:layout="@layout/fragment_mylibrary_offline" />
<fragment
android:id="@+id/fragment_discover_landing"
android:name="com.my.app.fragments.DiscoverLandingFragment"
android:label="@string/nav_discover_landing"
tools:layout="@layout/discover_landing_fragment">
<action
android:id="@+id/fragment_discover_landing_back_action"
app:popUpTo="@id/fragment_reading_lists"
app:popUpToInclusive="false" />
<argument
android:name="category"
android:defaultValue="Latest"
app:argType="string" />
<argument
android:name="searchText"
app:argType="string" />
<argument
android:name="searchMode"
android:defaultValue="false"
app:argType="boolean" />
<deepLink
android:id="@+id/discover_landing_category"
app:uri="myApp://discover/category?name={category}" />
</fragment>
</navigation>
旁注:这两个片段都不是起始目标。这是主片段,它是底部导航中的item1。fragment\u reading\u lists是底部导航中item2的第一个片段
根据深度链接留档:
当用户通过显式深度链接打开你的应用程序时,任务后台堆栈将被清除并替换为深度链接目标。嵌套图形时,每个嵌套级别的起始目标(即层次结构中每个元素的起始目标)也会添加到堆栈中。
因此,当您深度链接到fragment_discover_landing
时,后栈是mobile_navigation
,fragment_home
,然后是fragment_discover_landing
。由于fragment_reading_lists
不是图的start Destation
,因此它不会添加到后栈中,因此setupSusNavController
用于选择适当选项卡的OnDestinationChangedListener
永远不会看到该目的地。
如果要在后堆栈上显示片段读取列表,则它需要是包含片段发现着陆的嵌套图的起始目标:
<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/mobile_navigation"
app:startDestination="@id/fragment_home">
<fragment
android:id="@+id/fragment_home"
android:name="com.my.app.fragments.HomeFragment"
android:label="@string/nav_home"
tools:layout="@layout/home_fragment">
<action
android:id="@+id/action_fragment_home_to_fragment_browse_categories"
app:destination="@id/fragment_browse_categories" />
</fragment>
<fragment
android:id="@+id/fragment_browse_categories"
android:name="com.my.app.fragments.BrowseCategoriesFragment"
android:label="@string/discover_default_header"
tools:layout="@layout/browse_categories_fragment" />
<!-- Make sure to change your menu.xml to use @+id/reading_lists -->
<navigation
android:id="@+id/reading_lists"
app:startDestination="@+id/fragment_reading_lists">
<fragment
android:id="@+id/fragment_reading_lists"
android:name="com.my.app.fragments.ReadingListHubFragment"
android:label="@string/nav_readinglists"
tools:layout="@layout/readinglists_landing">
<action
android:id="@+id/action_fragment_reading_lists_to_fragment_discover_landing"
app:destination="@id/fragment_discover_landing" />
</fragment>
<fragment
android:id="@+id/fragment_discover_landing"
android:name="com.my.app.fragments.DiscoverLandingFragment"
android:label="@string/nav_discover_landing"
tools:layout="@layout/discover_landing_fragment">
<action
android:id="@+id/fragment_discover_landing_back_action"
app:popUpTo="@id/fragment_reading_lists"
app:popUpToInclusive="false" />
<argument
android:name="category"
android:defaultValue="Latest"
app:argType="string" />
<argument
android:name="searchText"
app:argType="string" />
<argument
android:name="searchMode"
android:defaultValue="false"
app:argType="boolean" />
<deepLink
android:id="@+id/discover_landing_category"
app:uri="myApp://discover/category?name={category}" />
</fragment>
</navigation>
<fragment
android:id="@+id/fragment_browse_library"
android:name="com.my.app.fragments.BrowseLibraryFragment"
android:label="@string/nav_library"
tools:layout="@layout/fragment_mylibrary_all" />
<fragment
android:id="@+id/fragment_downloads"
android:name="com.my.app.fragments.DownloadsFragment"
android:label="@string/nav_downloads"
tools:layout="@layout/fragment_mylibrary_offline" />
</navigation>
请注意,根据设计导航图文档:
[嵌套图]还提供了一个封装级别-嵌套图之外的目标无法直接访问嵌套图中的任何目标。
因此,这样做会产生一个副作用,即使您的fragment\u discover\u landing
在fragment\u reading\u列表
之外的任何目的地都看不到。本期通过深度链接跟踪导航,该链接允许您通过附加到应用程序的URL深度链接从应用程序中的任何位置访问目的地,但目前尚不可用。
我的应用程序有问题。我有一个底部导航视图,包含3个不同的片段,尽管目前只有主要的内容。当我试图从左侧的两个片段中的一个移动到主视图时,问题就出现了,即当底部导航视图被隐藏时。我附上了主代码。 PD:我有25.3.1版本的所有库(如果有用的话)。 感谢您的关注。 activity\u main。xml 主要活动。Java语言 我也给你添加了两张图片。 Ofertas片段 主片段
但是,当我初始化BottomNavigationView时,我会得到: 我正在从一个片段初始化BottomNativigationView。我猜这就是问题所在,但我想不出解决办法。 下面是为片段设置导航的活动的BottomNavigationView xml。
我实现了一个bottomNavigationView,其中每个选项都有其条目片段,有些选项在同一个选项下有更多的导航。 某种程度上是这样的: A- B类- C类- D- E类- 其中A, B, C, D 所需的导航是,应用程序的入口和出口点始终是选项A(入口片段A1)。因此,如果用户导航到另一个选项,只要该选项位于该选项的条目片段中,任何反向导航的行为都应该转到选项A。 我遇到的问题是,botto
我有一个关于底部导航栏的奇怪问题,虽然我花了大量时间在它上面,但我无法解决。当我以“推荐”的方式(从许多教程中)使用它时,它就是无法导航。 那么,我所说的“推荐”方式是什么意思呢:我有一个单独的acticity,其中有一个名为“MainActivity”的navHostFragment。这个主要活动有一个XML布局文件,我将底部导航栏放在其中。BottomNavigationBar还有一个XML布
实现tabbar建议采用小程序原生的tabbar,通过设置page/main.js(即对应小程序中app.json)来实现,详情请看小程序文档。示例如下,仅作参考: tabBar: { color: '#999999', selectedColor: '#1AAD16', backgroundColor: '#ffffff', borderStyle: 'white', /*
我正在将我的应用程序转换为使用一个活动并添加了BottomNavigationView,并努力防止在片段之间导航时重新创建片段,进行不必要的api调用。但是我无法使它工作: 不显示片段 图标未切换 触摸底部菜单项不会切换片段 触摸所选项目会使应用崩溃,并带有 TypeCastException: 活动的布局: 底部导航菜单: 在主活动中: 导航扩展: 屏幕为空白,未呈现任何片段视图。 有人能帮我解