gpt4 book ai didi

android - 使用 Safe Args 将数据从 Activity 传递到 Fragment

转载 作者:行者123 更新时间:2023-12-02 12:40:11 26 4
gpt4 key购买 nike

由于我的需要,我最近开始研究更高级的 Android 开发。
从导航组件开始,我了解了使用 Fragments 的方法以及使用 SafeArgs 传递数据的可能性

虽然我能够理解并找到有关如何在不同 fragment 之间传递数据的信息,但我没有找到有关如何将数据从实际 Activity 传递到 fragment 的任何信息。

以下是我何时需要这个的简短描述:

<- 登录屏幕 -> (主要 Activity )- 没有 fragment ,简单的登录 Activity

-- 用户输入数据

-- 点击登录

- 登陆成功

-- 保存和发送带有其他必要信息的 HTTP 响应数据并传输到 Profile Page

<- Profile Page -> (ProfilePage Activity) 带有抽屉布局,使用 NavHostFragment 显示不同的 Fragment:[Profile Page]、[Contact Info]、[Payment Cards]

-- 个人资料页面 fragment

-- 提取 Main Acitivity 发送的数据并使用它来更改 ProfilePage Fragment TextViews 的值

这是我面临问题的地方 - 我不知道如何将数据从实际 Activity 传递到 Fragment,特别是当我知道有所谓的 SafeArgs 时,我只有模糊的理解。

有人可以帮助我更好地理解这一点,或者至少为我指明正确的方向吗?

最佳答案

是的,正如您已经猜到的那样,您必须使用安全参数才能将其作为最佳选择。

在导航编辑器中,单击接收参数的目标。
在“属性”面板中,单击添加 (+)。
在出现的“添加参数链接”窗口中,输入参数名称、参数类型、参数是否可以为空,以及默认值(如果需要)。
单击添加。请注意,参数现在出现在“属性”面板的“参数”列表中。
接下来,单击将您带到此目的地的相应操作。在“属性”面板中,您现在应该在“参数默认值”部分看到新添加的参数。

您还可以看到参数是在 XML 中添加的。单击文本选项卡以切换到 XML View ,并注意您的参数已添加到接收参数的目标。一个例子如下所示:

 <fragment android:id="@+id/myFragment" >
<argument
android:name="myArg"
app:argType="integer"
android:defaultValue="0" />

您应该考虑为安全参数添加类路径和插件。
def nav_version = "2.3.0-beta01"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"

和插件:
apply plugin: "androidx.navigation.safeargs"

您的安全参数将为您生成类,然后以这种方式传递数据:
override fun onClick(v: View) {
val name = textview.text.toString()
val action = ThisFragmentDirections.ThatFragmentAction(name)
v.findNavController().navigate(action)
}

这样,您可以对 fragment 或 fragment 之间的 Activity 执行此操作。

关于android - 使用 Safe Args 将数据从 Activity 传递到 Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62308730/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com