问题标签 [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.
kotlin - Android DataBindingUtil.inflate 导致 InvocationTargetException
我正在开发一个 android 应用程序,该应用程序记录仓库中生产材料的消耗量。我正在使用 Androids UI Navigation 架构组件来处理应用程序内的导航。在每个片段中,我都使用相同的 onCreateView 函数:
其中 fragment_layout 是当前 Fragments 布局的资源 id。
我现在的问题是,在一个片段中,对 DataBindingUtil.inflate 的调用导致了 InvocationTargetException。
我已经注释掉了完整的布局,以检查布局文件中是否存在一些错误。之后,我注释掉了片段内视图的所有逻辑。这一遍又一遍地导致了同样的异常。
我做的最后一个测试是将 onCreateView 中的行代码从
至:
在那之后,所有的问题都没有了。但是这个解决方案不适合我,因为我需要使用数据绑定。
这是相关布局文件的数据部分
logcat 中显示的堆栈跟踪没有提供关于错误发生位置的太多信息。
android - 使用 Safeargs 组件通过 BottomNavigationView 传递参数
我正在尝试在我的 Android 应用程序中使用 Navigation 和 SafeArgs 组件以及 BottomNavigationView,但我无法通过底部导航视图传递参数。
这是我的情况:
- HomeActivity:托管所有片段并将用户ID传递给所有片段
- FragmentA:检索用户ID并做一些事情..
- 片段B:作为片段A
- 片段C:作为片段A
在我的 HomeActivity 中,我设置了导航组件以在片段之间切换:
并通过以下方式传递用户 ID:
在 FragmentA 内部,我尝试使用FragmentAArgs.fromBundle(arguments!!).uid
和委托属性获取数据,by NavArg()
但我得到null
(或只是默认值)
android - 使用 SafeArgs 将参数从片段传递到活动
使用导航图,当我从片段导航到活动并使用安全参数传递参数时,在活动中,我无法获得参数。我怎样才能得到从片段传递的参数???
在片段中,我可以按getArgument()
函数获取参数,但不能在活动中获取。
在片段中,我通过以下方式切换到另一个活动:
并在 B 活动中通过以下方式在 onCreate 中获取参数:
但我的应用程序立即崩溃。
android - 如何使用 Safe Args 传递通用数据类型?
我需要将 KotlinPair
作为参数传递。
以上尝试均未奏效。我该怎么做?
android - 启用安全参数插件后无法从数据绑定获取根视图
我正在使用 dataBinding 开发 Android 应用程序,目前正在尝试添加 safe-args 插件,但启用插件后,我无法再通过 binding.root 获取根视图 - Android Studio 给出错误:
我怎样才能让数据绑定和安全参数一起玩得很好?
请注意,虽然代码片段在 Kotlin 中,但我很乐意接受 Java 答案。在 Java 中不太舒服,但我可以轻松阅读和翻译它。
通过谷歌搜索错误消息和“安全参数”,我无法找到其他有同样问题的人。我首先尝试使用 Android 文档中列出的类路径:https ://developer.android.com/guide/navigation/navigation-pass-data
然后还找到了一个建议我使用的教程:
两者都有相同的问题:binding.root 在激活插件时出现错误
这是我的片段的 onCreateView()。该返回行在未启用安全参数时正常工作,并且在启用时不起作用
非常感谢任何解决或理解此问题的帮助!
android - 如何使用安全参数将“位图”作为参数传递
我想Bitmap
使用安全参数作为参数传递给另一个片段。argType
传递位图的正确方法是什么。
android - 为什么 android studio 不为所有安全参数生成代码?
我正在使用安全参数将参数从一个片段传递到另一个片段。Android Studio 会间歇性地生成带有所有参数的 fragmentArgs 类。
我尝试过并且确实有效的是更改导航图文件,制作项目,然后撤消这些更改,最后再次制作项目。
使用的依赖项:
项目模块:
ext.nav_version = '2.2.0-beta01'
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
应用模块:
apply plugin: "androidx.navigation.safeargs.kotlin"
我希望所有参数都可以在生成的类中找到,但事实并非如此。
android - 导航组件重复 NavArgs 的问题
我有一个片段:
此片段用于两个导航图中:
first_nav.xml
second_nav.xml
但是当我为发布 R8 构建项目时会抛出:
R8:程序类型已经存在:com.example.SomeFragmentArgs$Companion
谁可以帮我这个事?
android - FragmentDirections 不是由 Safe Args 插件生成的
当我尝试使用 Safe Args 插件从一个片段跳转到另一个片段时,编译器显示“未解析的参考:VideoFragmentDirections”。我已经为安全参数设置了类路径和依赖项,并且 VideoFragmentArgs 已正确生成。kotlin_version = '1.3.50' navigation-safe-args-gradle-plugin:2.1.0 在我的 xml
在 HomeFragment.ky 中
此外,我曾尝试清理和重建项目,它仍然无法正常工作。
android - Android SafeArgs 生成的操作缺少参数
我的项目使用 SafeArgs。我已经切换到其他人创建的分支,并且构建项目会生成编译器错误,因为即使在 nav_graph 中,生成的“~Directions”类方法也会返回 ActionOnlyNavDirections(没有传递给目标片段的参数)接受一个论点。
例如,使用以下 nav_graph.xml:
我结束了以下方向类:
和:
如您所见,FragmentC 采用“userName”参数,而 actionFragmentAToFragmentC 尊重这一点,而 actionFragmentBToFragmentC 则没有。 我尝试过清理、手动删除构建文件夹、使缓存无效并重新启动以及重新构建,但生成的类仍然看起来总是一样的。为什么 SafeArgs 为一个方向类而不是另一个生成参数?
如何在构建时调试 SafeArgs 插件以了解更多关于导致此问题的原因?