问题标签 [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 - 当我将相同的片段添加到第二个导航图时,不识别动作类
我需要将相同的片段添加到不同的导航图中。这是第一张图的一段代码(mobile_navigation)
第二个导航图中的第二个代码片段 ( navigation_initial )
当我尝试 MakeProject 时,构建输出显示错误:
位置:类 FragmentContactanosClienteDirections
但是当我评论第二段代码(navigation_initial)时,问题就消失了。问题是我需要第二段代码,因为我需要调用片段并与它共享捆绑包、其他信息并显示不同的东西......如何实现这一点?
我还分享了图表的设计:
移动导航
导航_初始
android - 如何使用 SafeArgs 进行导航
我刚开始在 Android 中使用 Jetpack Navigation 组件和 SafeArgs 进行导航。但是,我不明白如何从一个目的地导航到另一个目的地(我阅读了谷歌文档,但这让我感到困惑)。所以我有一个 Menu_Fragment 类,它在 NavGraph 中有一个指向 Softdrink 类的链接。自动创建了一个 Menu_FragmentDirections 类。但是,我不知道如何在 Menu_Fragment 类中使用它来实现 OnClick 侦听器事件。在这里,我在 Menu_Fragment 类中有 onClick 方法(请参阅https://developer.android.com/guide/navigation/navigation-navigate):
在这里您可以看到 Menu_FragmentDirections 类:
在这里你可以看到 NavGraph:
谁能告诉我,我必须在上面发布的 onCreateMethod() 中做什么。我收到错误消息:“无法解析符号‘操作’”和“无法解析符号‘导航’”(当然还有使用错误意外的标记 '...')
我会很感激每一条评论,并非常感谢您的帮助。
这里更新的是带有 onCreateMethod 的完整 Menu_Fragment 类:
android - 使用 android 导航 safeArgs 时的许多参数
我在 android 中创建导航图,并为目的地提供 args,但是当我调用该函数时,它说的参数太多。
已经在 build.gradle (app) 上设置
apply plugin: 'androidx.navigation.safeargs'
已经在 build.gradle (.)
dependecies { classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha05" }
这是我的导航来源
- 这是我导航的目的地
- 这是我的导航源的 kotlin 代码
当我在未使用的 gameFinished 函数中调用它时,GameFragmentDirections.actionGameFragmentDestinationToScoreFragment(score)
它对很多参数说,知道如何解决吗?
android - 使用可为空的 parcelable 参数编译时出现 Android 数据绑定错误
我想通过Payment
安全参数将我创建的 Parcelable 类从一个片段传递到另一个片段,但它可以为空。
我创建了类型的参数com.example.Payment
并使其可以为空。当我编译应用程序时,我在 build 文件夹下收到一条错误Expression in a class literal has a nullable type 'Payment?', use !! to make the type non-nullable
消息FragmentDirection
。
错误发生在这一行:
我不知道我做错了什么并且无法编辑文件,因为它在 build 文件夹下。
编辑:有导航的xml代码:
android - generateSafeArgsDebug 任务执行时出错,XmlPullParserException 只允许空白内容
我有一个项目,其中包含三个导航图 xml 文件,然后我从文件资源管理器窗口中删除了一个文件,之后我在构建项目时遇到了问题。
然后我恢复了删除的文件,但有同样的问题,也尝试清理项目并使缓存/重启选项无效几次,但没有运气
java - 使用 Android Safe Args 时类和包冲突
我正在努力解决 Android (Java) 中的 Safe Args 的一个非常烦人的问题。
我有一个这样的项目结构:
这里重要的部分是com.myapp.activities.ActivityA包。
当向导航图添加一些导航路径时,Safe Args 会生成如下结构:
在这种情况下,我无法编译我的项目,因为我得到了错误
错误:ActivityA 类与同名包冲突。
这对我来说完全有意义,因为类com.myapp.activities.ActivityA被生成以打包com.myapp.activities.ActivityA但不知何故我不明白我应该如何避免这个问题。我的文件夹结构有什么完全错误的吗?
android - 创建一个表单,您可以在其中拥有多个子片段,这些子片段将数据发送回 Kotlin 主片段
我是 kotlin 的新手,我很难在我的应用程序中创建一个表单。该表单使用一个主片段,您可以在其中单击不同的属性,然后在其中打开一个新片段,您可以在其中插入数据。当您完成子片段中的数据填写后,我想回到主片段。我已经设法使用界面和导航组件/安全参数在它们之间传递数据,并且我在活动中使用模型视图来保存不同的片段来管理数据。就我而言,我的代码已经变成了意大利面条代码,并且有些东西告诉我我做得不对。创建一个表单的最佳方法是什么,您可以有几个子片段将数据发送回主片段,而主片段保留数据?
如果有人能指出我正确的方向,我将不胜感激。
android - Android: Fragment has null arguments when getting global nested safeargs
I am trying to get my safeargs
within the second fragment (calibrateRepairOptionFragment)
of my nested_graph
, The problem is that I get the above written error Fragment CalibrateRepairOptionFragment{5e1268d} (c7c2906d-5a17-4d22-b41d-eefe8eee059f) id=0x7f09012d} has null arguments
.
I am confused because when I try to get my safeargs
in the first fragment (CalibrateRepairMessageFragment)
, everything works and the toolbar_title is not null.
BaseFragment (getting safeargs here)
First Fragment (no error here, toolbar is set correctly)
Second Fragment (getting error here, toolbar.title is null)
nav_main.xml
Full Stracktrace
android - 通过 Safe Args 将数据传回之前的 Fragment。这怎么可能?
在我的应用程序中,我有一个 Activity,其余的是片段。现在我正在尝试按如下方式运行。假设我有片段 A(家庭)、B 和 C。场景是这样的:
我从 A 导航到 B,它显示了我通过 Safe args 从 A 传递的一些数据。然后我从 B 导航到 C 以编辑 B 中显示的数据。然后我从 C 回到 B 并且 B 向我显示 C 中编辑的数据。最后,我回到家。就这样。
我通过 Safe args 传递数据,但问题是,当我从 C 回到 B 时,我无法导航回 A,因为这navigateUp()
将我带回 C 而不是去 A。
导航方法:
- 从 A 到 B:
Navigation.findNavController(requireActivity(), R.id.nav_host_fragment).navController().navigate(HomeFragmentDirections.actionNavHomeToNavB(some_string_data))
- 从 B 到 C:
Navigation.findNavController(requireActivity(), R.id.nav_host_fragment).navController().navigate(BFragmentDirections.actionNavBToNavC(string_data_in_B))
- 从 C 到 B:
Navigation.findNavController(requireActivity(), R.id.nav_host_fragment).navController().navigate(CFragmentDirections.actionNavCToNavB(edited_string_data_from_B))
- 从 B 到 A:
Navigation.findNavController(requireActivity(), R.id.nav_host_fragment).navController().navigateUp()
我还尝试navigateUp()
在返回 B 之前使用,这会引发目的地不存在的异常,并且我尝试使用popBackStack()
从堆栈中取出 C,以便navigateUp()
B 中的可以将我带回主页。还没有成功。
android - 更新基本导航抽屉活动的参数
上下文: 我想在他登录后将 userId 传递给片段 UserFragment。我使用一个新的项目 Android 类型“导航抽屉活动”。我使用 LiveData,所以当用户登录时,我的 livedata 的观察者会从 MainActivity 更新 idUser。我还想更新导航组件中的片段参数...
我的问题:我只是想在导航时将 userId 的值作为目标(UserDetails 片段)的参数传递......但我不想创建一个 onClickListner 并在包中传递参数。我只想使用导航组件解决方案,因此只需更改在我添加到项目“安全参数”的导航组件中声明的片段的参数值。我在其中一个目标片段上添加了“theUserId”参数:
在 mobile_navigation.xml 中:
在 UserFragment.kt 中:
我尝试了什么:
我在 MainActivity.kt 的 onCreate() 中的 LiveData 观察者是:
我试图在我的 LiveData Observer 中添加一个 addOnDestinationChangedListner(但它会增加 Listner)。我还尝试直接在我的 MainActivity 的 OnCreate 中放置观察者(似乎更好):
...但是只有在第二次单击我的 UserDetail 片段的导航项后才会更新 userId 值。我不明白为什么。
我认为这段代码最好放在我的 Livedata 观察者中:
...但我不知道如何处理 myArgs ...如何使用它,如何将其注入到导航组件中,以便下次单击抽屉项“详细用户”时,我的参数“ theUserId" 在片段 UserFragment 中被很好地修改和检索。
谢谢您的帮助。