问题标签 [android-architecture-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.
android - 具有多个堆栈的 Android JetPack 导航
我正在使用version 1.0.0-alpha04
带有底部导航的 Jetpack Navigation。它可以工作,但导航不正确。例如,如果我有选项卡 A 和选项卡 B,从选项卡 AI 转到页面 C,然后从那里转到选项卡 B 并再次返回选项卡 A,我将在选项卡 A 中看到根片段,而不是页面 C不是我所期望的。
我正在寻找一种解决方案,为每个选项卡提供不同的堆栈,因此当我回到它时,每个选项卡的状态都会被保留,而且我不喜欢将所有这些片段保留在内存中,因为它有一个坏的对性能的影响,在喷气背包导航之前,我使用了这个库https://github.com/ncapdevi/FragNav,这正是它的作用,现在我正在寻找与喷气背包导航相同的东西。
android - Android 导航组件 popUpTo 行为
我试图弄清楚如何跳过导航组件后堆栈中的一些片段。我有这样的应用程序结构
工作流程应如下所示:
- 用户进入应用程序 - categories_fragment 默认打开
- 用户打开 category1_collection_fragment
- 用户打开 category1_collection_item_view_fragment
- 用户打开 category1_collection_item_edit_fragment
- 用户编辑项目并保存
- 用户看到 category1_collection_item_view_fragment
- 用户单击后退按钮并进入第 2 步,可以重复 3 - 6 次操作
导航图如下所示:
我实现的有点工作,用户在编辑并单击后退按钮后被带到 category1_collection_fragment,但是,当我尝试打开集合中的另一个/或相同项目时出现崩溃。错误是此 NavController 未知导航目的地。
我使用 addOnNavigatedListener 检查了在此周期中更改了哪些导航控制器目标:
category1_collection_view_fragment 我无法从中打开其他项目,当我打开时我会崩溃。
这有什么问题?如何在没有打开编辑片段的历史记录的情况下使项目保存打开的视图片段?
我正在考虑只使用 findNavController().popBackStack() 而不是在保存后打开视图片段,但我需要将更新的项目数据传递给视图片段,并且使用它我不能这样做。
编辑
在试图弄清楚发生了什么时,我注意到当使用带有setUpWithNavController的导航控制器设置工具栏时,单击向上导航图标,之后导航按我想要的方式工作,但对于后退按钮而言并非如此,即使后退按钮将我带到我想要的片段由于崩溃,我无法从其他任何地方导航
android - 导航组件popUpTo bug
最近我遇到了我在这里问过的问题
但是当试图弄清楚发生了什么时,我总是偶然发现同样的问题。
这就是我所拥有的——我有一个集合、预览、编辑片段,而不是我需要在它们之间导航。
但是在从编辑片段导航到预览片段之后,我希望后退按钮将用户带到集合片段而不是编辑片段,并且它会这样做,但是当尝试进一步导航时它会崩溃,因为据说目的地是(view_fragment)。为什么会这样,是某种错误吗?
编辑:
堆栈跟踪:
android - 使用 DialogFragment 作为 Android NavController 中的 Fragment 之一
我有一个使用 XML 定义的图形,并在我的 NavGraph 中添加了一个 DialogFragment 作为 Fragment 之一。当我使用 resId 调用 NavController.navigate 并在该导航控制器上捆绑时,我看不到任何对话框正在显示。有什么办法可以使用 DialogFragment 而不是标准 Fragment?
我的动作定义如下
我对活动和片段的其他操作工作得很好。
android - 导航组件弹出行为无法正常工作
在我正在构建的应用程序中,我使用了单一活动架构,并决定使用 Google 的新导航组件在应用程序中导航。
尽管它显示出巨大的希望,但它也有一些缺点,我的问题就是其中之一。
假设我们有三个按顺序导航的片段,除了当我们在第三个片段上单击后退按钮时我们想返回第一个片段。事情是这样的:
这里的问题是,当我想第二次重复导航时,会发生异常告诉我:
java.lang.IllegalArgumentException:导航目的地 com.hmomeni.navisample:id/action_firstFragment_to_secondFragment 对此 NavController 是未知的
进一步调查显示,在点击返回按钮并返回第一个片段时,navController.currentDestination
仍然指的是ThirdFragment
哪个是错误的,应该是FirstFragment
。
对此的任何帮助表示赞赏。
android - android - 如何使用底部应用栏实现导航
我有一个具有以下 4 种布局的项目:
我实际上有 1 个活动,其中包含一个底部应用栏和注入片段的 NavHostFragment。主片段是主视图。有一个 Management 和一个 Setting 片段,它们都是像主视图一样的顶级视图,但不相互依赖。这 3 个片段可以通过单击导航抽屉中的项目来切换。为简化起见,我正在尝试新的导航架构组件。
现在我有一些设计问题:
- 我是否应该将底部应用栏移动到片段中,因为它们不相互依赖并且 FAB 按钮有另一个动作,否则我必须在片段切换时更改活动中的 onClickListener?
1.1 或者我什至应该在管理片段中显示底部应用栏?也许只是带有 Up 插入符号的顶部栏。
1.2或底部应用栏+顶部栏和向上插入符号
1.3和抽屉图标呢,我应该在Mgmt片段中显示它吗
我应该为设置片段使用片段还是活动?当我使用片段时,我必须将底部应用栏移动到片段中。否则,底部应用栏将在设置片段中可见
管理片段只有一个回收者视图。单击一个项目应打开一个 DetailView。我应该在这里使用片段还是活动?
我阅读了有关导航架构组件的文档,其中有一个关于自定义目的地的部分。此外,我检查了源代码并知道片段被替换了。此外,我查看了一些常用应用程序如何使用导航抽屉实现导航,并注意到它们都替换了它们的片段。为什么没有人隐藏/显示片段,有理由不这样做吗?假设我们有一个带有列表视图的片段,其中包含从数据库或其他昂贵任务收集的数据。那么显示/隐藏这些片段而不是替换它不是更好吗?
抱歉,这是我的第一个应用程序,我对这个话题真的很困惑,而且似乎没有关于它的官方建议,甚至 Material Design 指南也没有真正参考它。
你会怎么做?
android-fragments - 导航组件以编程方式设置过渡动画
昨天我遇到了一个问题,我需要在我的 baseFragment 中从 nav_graph.xml 设置动画,并以编程方式从当前节点获取动作对象,其中包括 enterAnim 和 exitAnim 资源。在这里找不到解决方案,所以我们开始吧。
首先,我们需要将 res 文件夹中的动画提供给 anim 文件夹,因为它很饿。
slide_in_left.xml
您可以在 github 或 stackoverflow 上轻松找到其他动画。
这是我的 nav_graph.xml 片段,我们将从中进行转换
现在在 KebabFragment.tk 中,你将调用 baseFragment 方法进行转换,以了解我们想要的烤肉串的细节,然后 popFromBackStack
在我们的 baseFragment.kt
有些人会问。嘿,Kebab 先生,但我怎么能得到getRootView()
,Kebab 先生会看着你说“伙计,看看这个世界,我们可以一起成就大事”
杜伦烤肉串。享受。
android - 使用单个 NavHostFragment 为具有多个模块的应用程序导航
我有一个包含多个功能模块的应用程序,我想在主模块中使用单个 NavHostFragment 进行导航。
导航图似乎工作正常(我可以添加功能模块中的所有片段,并且当我启动应用程序时会显示 startFragment)但有时我必须从功能模块内部开始导航但我无权访问 NavHostFragment那里。
例如 :
android - 使用 MVVM 安卓导航
我有一个应用程序使用 Androids ViewModel 类和导航组件在片段之间导航。我将如何处理来自 ViewModel 的导航?我正在使用 RxJava,我正在考虑让 Fragments 监听导航事件,然后以这种方式触发导航。处理这个的正常方法是什么?如果有帮助,我也会使用 Dagger 进行依赖注入。