问题标签 [android-safe-args]
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 - 从对话框返回后,导航 safeArgs 无法导航
Illegal argumentException: Navigation action/destination pkgname:id/action_nav_home_to_dialog cannot be found from the current destination Destination(pkgname:id/dialog)
当使用 safeArgs 方向从 HomeFragment 导航到其他片段时,我得到了。即使点击了 HomeFragment 中的 Button,但当前目的地是 pkgname:id/dialog。
每次从 HomeFragment 导航到其他 Fragment 时,我应该检查当前目的地是否是 HomeFragment 吗?我应该在对话框关闭时写一些代码吗?
在我的调查中,关闭正常片段后似乎没有发生。
繁殖方式
- 创建新的“导航抽屉活动”项目。
- 将类路径添加到顶级 gradle 文件的依赖项
- 将应用插件行添加到模块级 gradle 文件
4.创建对话框片段文件
- 将对话框添加到 mobile_navigation.xml 并将操作从主页添加到对话框
6.添加按钮到gragment_home.xml
- 将点击动作添加到 HomeFragment 的 onCreateView
- 运行应用
- 一次又一次地点击“显示对话框”按钮
android - NullPointerException 与导航组件的参数与 defaultValue
我遇到了一个奇怪的情况。也许有人知道为什么会发生这种情况。我MyActivity
在main_graph.xml中添加了一个参数- isRecommended
- 具有默认值 ( false
):
并且一切正常,但是我的一个单元测试失败了-即,NullPointerException
在测试中抛出了一个带有此验证的行:
虽然生成的类中只有一种actionGlobalMyActivity
方法:MainGraphDirections
没有方法也接受isRecommended
参数。那么为什么会抛出这个异常呢?...
kotlin - Android Kotlin Safe-Args 导航回 Fragment 而无需再次传递参数
为了最简单的解释,我有 3 个片段。
用户将输入他们想要学习的语言的第一个片段,然后将此数据传递到下一个片段以将表的标题更新为当前语言。这部分我已经成功地使用安全参数完成了。
但是,当您从这个片段导航到第三个片段并尝试返回时,您需要再次传递参数,但它们之前已经在初始片段上设置并传递了,因此它会抛出一个错误,因为没有在目标上传递参数分段。
有没有我遗漏的东西或其他在片段之间传递数据的方法,我可以用它来解决这个问题?
android - 如何在 viewModel Kotlin Android 中保护参数?
我的 MVVM 结构有问题。我创建应用程序并在片段之间传递数据。现在它工作正常,但我需要将此逻辑添加到我的 ViewModel 中。
这是我的 NotesClickFragment:
这是我的 NotesClickViewModel:
我正在尝试添加一个私有参数val navArgs: NotesClickFragmentArgs
并创建其他函数来从片段中设置数据,但它不起作用。什么是好的做法?提前感谢您的提示。
android - 如何使用带有 Kotlinx 可序列化数据的 Navigation Safe Args
我正在尝试将 Navigation Safe Args 与 Kotlinx @Serializable 类型一起使用,但是当我传递可序列化数据时,我在运行时不断遇到同样的问题:
在我的nav_graph.xml我有以下内容:
我的SerializableModel看起来像这样:
有没有人找到一种解决方法来使用 Safe Args 进行这项工作。如果您使用导航 API 传递 Bundle,它会起作用,但如果可能,我想使用 Safe Args。
我正在使用的版本
- plugin.serialization: 1.4.21
- 导航安全参数梯度插件:2.3.2
- androidx.navigation:navigation-ui-ktx: 2.3.2
- androidx.navigation:navigation-fragment-ktx: 2.3.2
- kotlinx 序列化核心:1.0.1
提前致谢!
android - 使用 Navigation 的操作而不是直接的 Fragment id 会使应用程序崩溃
我在使用导航组件的一个非常简单的任务时遇到问题。我只有 2 个屏幕:MainFragment 和 SearchFragment。
当我尝试通过导航从 MainFragment 转到 SearchFragment 时,它运行良好。然后我按下后退按钮,它自然会回到 MainFragment。
问题是,当我第二次单击同一个按钮再次转到 SearchFragment 时,我收到以下错误:
我正在从 MainFragment 导航到 Search,如下所示:
我尝试重做 nav_graph.xml 但没有成功。
如果我只是直接使用 id 导航,它可以正常工作,我可以来回多次
任何想法如何解决安全参数的问题?
编辑:
这是我的导航图
这是活动(它基本上只是片段的容器):
这是activity_home.xml
这是HomeActivity.kt
这是 HomeFragment:
这是它的 XML:
android - Android Navigation Safe Args 传递 LiveData 和 Lambda 变量
对于一个简单的Fragment A -> Fragment B
图表,我有两个问题:
我可以
LiveData
使用安全参数通过吗?如果没有,我该如何收听Fragment B
from的值变化Fragment A
?我可以使用安全 args传递 lambda 变量(函数) (充当回调侦听器)吗?
android - 使用对话框导航时无法调用 onResume/onPause(BottomSheetDialogFragment)
很抱歉,如果命名不好,但是,有太多东西,所以不得不改变名字。但是我遇到了导航问题。我有一个 nav_graph 如下。
我正在使用它导航以在我的片段中显示对话框
哪里class OtherFragment: BottomSheetDialogFragment{...}
。OtherFragment 正在打开。但问题是当我导航到 OtherFragment 时,未调用 SomeFragment 的 onPause 函数。反之亦然(也就是说,当我关闭其他片段时,在 someFragment 中没有调用 onResume)。是什么原因?我错过了什么吗?