问题标签 [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.
android-architecture-components - 在导航组件的起始目的地时如何处理后退按钮
我已经开始使用新的导航组件,我真的很喜欢它!我确实有一个问题 - 当我在图表的起始目的地时,我应该如何处理后退按钮?
这是我现在使用的代码:
当我在图表上的任何位置时,它都工作得很好,它把我送回去,但是当我在它的开始时——应用程序崩溃了,因为后台堆栈是空的。
这一切对我来说都很有意义,我只是不知道如何处理它。
虽然我可以检查当前片段的 ID 是否与我知道是图根的 ID 相同,但我正在寻找一种更优雅的解决方案,例如图表中当前位置的布尔标志是否是起始位置与否。
想法?
android - IllegalArgumentException:此 NavController 未知导航目的地 xxx
当我尝试从一个 Fragment 导航到另一个 Fragment 时,我遇到了新的 Android Navigation Architecture 组件的问题,我收到了这个奇怪的错误:
除了这个特定的导航之外,其他所有导航都可以正常工作。
我使用findNavController()
Fragment 的功能来访问NavController
.
任何帮助将不胜感激。
android - 使用 Jetpack 的 Android 导航组件销毁/重新创建的片段
我正在尝试在我现有的应用程序中使用 Jetpack 的架构组件实现导航。
我有一个活动应用程序,其中主要片段 ( ListFragment
) 是项目列表。目前,当用户点击一个列表项时,第二个片段被添加到堆栈中fragmentTransaction.add(R.id.main, detailFragment)
。因此,当按下背部时,它DetailFragment
会分离并ListFragment
再次显示。
使用导航架构,这是自动处理的。它没有添加新的片段,而是被替换,因此片段视图被销毁,onDestroyView()
被调用并onCreateView()
在按下返回以重新创建视图时被调用。
我知道这是与LiveData和ViewModel一起使用的一种很好的模式,可以避免使用不必要的内存,但在我的情况下,这很烦人,因为列表的布局很复杂,并且膨胀它会耗费时间和 CPU,还因为我需要保存列表的滚动位置并再次滚动到用户离开片段的相同位置。这是可能的,但似乎它应该存在更好的方法。
我试图将视图“保存”在片段的私有字段中,并在onCreateView()
已经存在的情况下重新使用它,但这似乎是一种反模式。
有没有其他更优雅的方法来避免重新膨胀布局?
android - 如何使用 FragmentTransaction#add() 而不是 #replace() 具有 FragmentNavigation#navigate() 行为
我正在努力保留片段的视图(不存储为局部变量),并且在当前的导航组件中,它看起来确定onDestroyView()
被调用,我想避免onDestroyView()
使用 Android 导航调用,但没有这样的方法,其行为就像FragmentTransaction.add()
在我们的香草片段。
在 Navigation Jetpack 中,我们有:
FragmentNavigator.navigate()
它利用fragmentTransaction.replace()
这样的:
为什么没有ft.add()
方法选项?如果有解决方法,我们该怎么做?
是不是这个概念ft.add()
被淘汰了?
android - 使用 RecyclerView、android jetpack 导航和折叠工具栏实现正确滚动
我尝试在我的 android 应用程序中使用以下设置来实现正确的滚动行为。
对于导航,我将喷气背包导航与Toolbar
布局和底部导航结合使用。我也使用“一个活动,多个片段”的原则。底部导航的每个项目都会Fragment
根据我的导航图启动一个对应项。这需要我NavHostFragment
在布局中使用 a 。
我的Toolbar
布局是活动布局的一部分,并根据当前片段填充。一些片段需要一个 collapsing Toolbar
,它也会在需要时添加。但是当有一个折叠工具栏时,我面临以下问题:
在特定情况下,我有一个 collapsing Toolbar
,其中NavHostFragment
填充了一个RecyclerView
. 在其他情况下,我似乎可以添加app:layout_behavior="@string/appbar_scrolling_view_behavior"
到RecyclerView
并获得预期结果,因为RecyclerView
是CoordinatorLayout
. 在我的情况下,它RecyclerView
是 a 的子级Fragment
,它基本上是 a FrameLayout
(根据 Layout Inspector)。这导致了一个问题,即 layout_behaviour 上RecyclerView
没有效果,因为RecyclerView
不是CoordinatorLayout
.
我无法为这个问题想出一个可行的解决方案。有人有想法吗?
布局/activity_overview.xml
布局/工具栏.xml
布局/list.xml
kotlin - 如何将 NavDestination 添加到 NavigatorProvider?
androidx.navigation 包的扩展函数有plusAssign,因此它相当于+=
但在我的代码中它没有找到plusAssign。
©️matpag
java - 有没有办法在新的导航组件上按下后恢复 recyclerview 上的状态
我正在使用什么:
- MVP
- 导航组件
- 单一活动
- 碎片
- 回收站视图
- 领域
问题:
我有一个 MainActivity 托管应用程序流的所有片段。
有一个片段有一个 recyclerview,我滚动得越多,发出的 API 请求就越多。每当我按下一个项目导航到不同的片段并按下返回返回列表时,列表只有一小部分之前加载的 recyclerview,我想要一切。
是否可以使用导航组件执行此操作?
每当我回击时,我可以防止调用 onCreateView 吗?
我试图将视图保存在一个静态变量中,有一个 onSaveInstance (但它永远不会被调用)
我以这种方式使用导航:
主要片段:
我的期望:
每当我从 TripDetails 返回到 Trips 时,我都想按原样获取我的 recyclerview,之前加载的项目位于正确的位置。
当前结果:
每当我从 TripDetails 按下返回到 Trips 时,recyclerview 会将项目切割为仅可见的项目,这意味着我们将丢失之前加载在之前页面中的项目。
android - 如何自定义 setupActionBarWithNavController 动画?
我可以轻松自定义 android 导航操作,就像这段代码一样,但我无法自定义来自抽屉或底部导航和菜单的操作。
有没有办法自定义这个动作?来自此配置setupActionBarWithNavController的操作?
android - Android Jetpack 导航 - 通知正确项目的底部导航视图
我遇到了一个问题,即当深度链接到 2 级片段时,导航 UI 没有选择正确的底部导航视图项。
这就是我的意思:
- 选择fragment_reading_lists:选择了正确的底部导航项
- 从fragment_reading_lists -> fragment_discover_landing导航:选择了正确的底部导航项
- 到fragment_reading_lists的深层链接:选择了正确的底部导航项
- !!指向fragment_discover_landing的深层链接:未选择正确的底部导航项!!
当我深层链接到 fragment_discover_landing 时会发生什么?默认底部导航项被选中。
有没有办法通知底部导航适配器在这种情况下应该选择哪个项目?
这是我的导航图:
旁注:这些片段都不是起始目的地。那是主页片段,它是底部导航中的 item1。fragment_reading_lists 是底部导航中 item2 的第一个片段