问题标签 [android-jetpack-navigation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
264 浏览

android - Android studio(3.4.2) 导航架构设计选项卡中的空指针异常

错误太长,这里就不贴了,所以我只贴错误的第一页。当我在 android studio 3.4.2 中打开具有空的默认启动代码 navigation.xml 文件的 android 项目时,IDE 会显示警报,即发生 IDE 错误。但是我的项目同步成功,我不能做的是在设计选项卡中打开导航,它显示“等待构建完成”。

0 投票
1 回答
48 浏览

android - 如何在项目以简单片段开始并使用底部导航导航到页面的地方使用喷气背包导航?

据我了解 singleactivity应该有它自己的 single navigationHostFragment。我检查过的示例,例如,如果示例具有BottomNavigationView活动的 xml,则如下所示

现在我喜欢如果我有一个以 SetupFragment 开头的项目,那么如果用户未登录,则应该导航到 LoginFragment 或导航到具有BottomNavigationView. 我不知道我的 Activity xml 应该是什么样子?我可以创建导航图,但我不知道我的活动的 xml 应该是什么样子?

0 投票
1 回答
562 浏览

android - 导航图和多个主机活动

我有一个功能模块 splash,它有一个 nav_splash 图和一个 SplashActivity。

当我导航到第二个功能模块 main 时,它有一个 nav_main 图和一个 MainActivity,而不是使用 MainActivity 作为主机(即使在导航编辑器中它也显示为主机),它继续使用 SplashActivity 作为主机。

因此,现在我必须导航到一个活动 (MainActivity) 以强制将此活动用作主机,而不是导航到 nav_main 图。

这是故意的吗?或者它是一个错误?

使用多个活动的第一个原因是它们在清单文件中具有不同的主题。

0 投票
4 回答
1331 浏览

android - Fragment 背面刷新 - Android 导航

我正在使用 Android Navigation 组件制作应用程序。但是我遇到了一个非常基本的问题,这可能会导致我的应用程序的整个开发出现问题。

情景

我有这个片段,onViewCreated我正在从我的视图模型中观察一个字段。

setEventDetails方法中,我用数据设置了recyclerviews。

问题

这个片段是一个带有卷轴的长片段。假设我向下滚动很长一段路,然后单击一个按钮,将我带到另一个片段。

但是当我回到这个片段时,它再次将我带到顶部并完成它在第一次加载时所做的一切。这可能令人不安。这是一种重新创建整个片段而不是保持其旧状态。

我试过的

我搜索了很多问题。并经历了这个 Github 查询这个 SO 问题另一个 Git ......但我无法解决我的问题。

请帮助,在此先感谢。

0 投票
3 回答
2265 浏览

android - 导航应该弹回堆栈而不是返回起始目的地

我的布局中Activity有一个NavHostFragment和一个BottomNavigationView。有NavHostFragment一个main_navigation_graph其中包含四个Fragments。他们ids匹配,BottomNavigationView#menu以便Navigation当我打电话时可以自己处理所有的东西

到目前为止一切正常。My problem is that the back button will go to the start destination when another tab (in the BottomBar) was selected.

我知道这是预期的行为(至少根据NavigationUI.onNavDestinationSelected文档):

...

默认情况下,返回堆栈将弹出回导航图的起始目的地。有的菜单项android:menuCategory="secondary"不会弹出回栈。

但这不是我想要的。

我想要这样的行为

如果用户位于选项卡的“根”(来自 BottomNavigation)并且用户按回 -> 关闭App(完成Activity)。

我怎样才能做到这一点?

这个 gif 演示了当前的实现:

当我在Szenen选项卡并按下返回时,我想关闭Activity. 相反,它转到startDestination(这是系统选项卡)。

0 投票
2 回答
2457 浏览

android - 如何从片段管理底部导航?

我正在尝试将 navController 设置为 bottomNavigation,但它需要活动,问题是我的 borromNavigation 托管在片段中,所以我没有活动实例。

我试过了

和:

home_fragment.xml:

所以,我需要以某种方式my_nav_host_fragment从我home_fragment.xmlHomeFragment.kt

HomeFragment.kt

底部菜单.xml:

main_navigation.xml:

我希望从片段中处理bottomNavigation,但现在我点击了菜单项,没有发生任何事情或错误。

0 投票
0 回答
321 浏览

android - 如何使用 Jetpack 导航组件从 ViewPager 的片段导航到其他片段?

我有一个应用程序。它基于 Android Jetpack Navigation 组件,并具有带有 ViewPager 的 Tab UI。

例如,有片段作为 Tab UI。(不是底部导航 UI)

  • MainFragment:这包含 3 个 Tab 片段作为 Tab 和 ViewPager。
  • 细节片段

这 2 个片段存在于 nav_graph.xml 上。

和别的:

  • TabA片段
  • TabB片段
  • 选项卡片段

这 3 个片段在 nav_graph.xml 上不存在

我想知道的是如何从 TabXFragment 导航到 DetailsFragment。

其实导航并不难。是一样的。我可以通过调用“findNavController.navigate()”进行导航。

但问题是“返回”按钮。

当我触摸 DetailsFragment 上的“返回”按钮时,它会显示奇怪的屏幕。只是白屏。没有 TabView。

我预计它会显示 TabXFragment。但它不...

所以我使用 Activity 而不是 DetailsFragment 解决了这个问题。但我想知道我该如何处理这个问题......

(对不起我的英语水平不好)

0 投票
1 回答
2310 浏览

android - 在android导航组件中添加进入动画以开始目的地

我知道如何action在导航图中的标签中添加进入和退出动画。我也知道如何NavOptions在导航时动态添加动画navController

我想知道我们如何StartDestination在导航图中添加输入动画。我可以通过两种方式做到这一点:

  1. 将动画应用到起始目的地的根视图
  2. 使用将被原始目标片段替换的临时起始目标片段。
  3. 将动画应用于容器(FrameLayoutNavHostFragment并动态添加宿主片段

但我想知道是否有为此目的的官方解决方案。

谢谢

0 投票
1 回答
383 浏览

android - 底部导航对于起始目的地的行为不同

嘿,最近我在使用 NavController 进行设置时发现了这种奇怪的底部导航行为。

问题

只有底部导航的导航图中的起始目的地保存其状态。而其他人则没有。[这意味着 onDestroy 永远不会仅用于起始目的地]。现在的问题是与起始目的地导航图关联的 ViewModel 永远不会被清除。

我正在寻找的行为

如何使起始目的地生命周期与所有其他目的地一样,因此在目的地更改时 viewModel 将被清除?

代码片段:

现在,当我从 HomeFragment 切换到 ProfileFragment 或 MessageFragment 时,不会调用 HomeFragment 的 onDestroy。但是当我从 ProfileFragment 或 MessageFragment 切换时,它们都会调用 onDestroy。

0 投票
1 回答
663 浏览

android - 如何使用 Jetpack 的导航在片段中使用工具栏但不能在活动中使用工具栏

我已经开始使用 Android Jetpack 的导航库。到目前为止,我发现它非常易于使用。我面临的问题是工具栏。

我想要实现的是:

  1. 用户打开应用程序并显示登录页面。这是导航的开始,不应显示工具栏。
  2. 如果用户第一次登录,将显示重置密码的片段(由管理员自动生成),以便用户更改密码。在这里,我想显示一个带有后退箭头的白色工具栏(没有文字)
  3. 如果用户之前登录过,我们会显示一个加载屏幕(也没有工具栏)

我尝试了很多事情,但没有成功。前两次尝试使用具有NoActionBar样式的活动。

重置密码片段中的工具栏

  • 带有工具栏的自定义 Appbar。它正在显示,但未显示后退箭头。我尝试在我的工具栏中添加一个 Imageview,我还尝试从 java 设置图标,但这些都不起作用。

Activity 中的工具栏

这个尝试奏效了。它在我的活动中添加了一个工具栏,如下所示:

在我的控制器中,我添加了这个:

这里的问题是工具栏显示在我的第一个片段中,我不希望这样。我尝试从我的第一个片段中删除它并且它有效,但是当我尝试在我的第二个片段中再次显示它时,由于某种原因findViewById无法识别我的工具栏。所以我最终在我的第一个片段代码中再次显示了工具栏,就在第二个片段显示之前。它起作用了,但是当工具栏显示并且看起来不太好时,您会注意到动画,而且我知道直接从我的片段中隐藏/显示工具栏是不行的。

我该怎么办?

那么,我需要做什么才能正确实现这一目标?将来,我也会有一个包含其他片段的活动,我将需要与我之前写的类似的行为。我想如果我从现在开始做这件事会更好。

谢谢!