使用 Safe Args 将数据从 Activity 传递到 Fragment
Passing data from Activity to Fragment using Safe Args
由于我的需要,我最近开始研究更高级的 Android 开发。
从导航组件开始,我了解了使用片段的方法以及使用 SafeArgs
传递数据的可能性
虽然我能够理解并找到有关如何在不同片段之间传递数据的信息,但我没有找到有关如何将数据从实际 Activity 传递到片段的任何信息。
这里是我何时需要这个的简短描述:
<- 登录屏幕 ->(主 activity)- 无碎片,简单登录 ACTIVITY
-- 用户输入数据
-- 点击登录
-- 登录成功
-- 保存和发送 HTTP 响应数据以及其他必要信息并传输到配置文件页面
<- 个人资料页面 -> (ProfilePage Activity) 抽屉式布局使用 NavHostFragment 显示不同的片段:[个人资料页面]、[联系信息]、[支付卡]
-- 个人资料页面片段
-- 提取 Main Acitivity 发送的数据并使用它来更改 ProfilePage Fragment TextViews 的值
这是我遇到问题的地方 - 我不知道如何将数据从实际 Activity 传递到 Fragment,尤其是当我知道有所谓的 SafeArgs 时,我对.
有人可以帮助我更好地理解这一点,或者至少为我指明正确的方向吗?
是的,如您所料,您必须使用安全参数才能将其作为最佳选择。
在导航编辑器中,单击接收参数的目的地。
在“属性”面板中,单击添加 (+)。
在出现的添加参数 Link window 中,输入参数名称、参数类型、参数是否可为空以及默认值(如果需要)。
单击添加。请注意,该参数现在出现在“属性”面板的“参数”列表中。
接下来,单击将您带到此目的地的相应操作。在“属性”面板中,您现在应该会在“参数默认值”部分看到新添加的参数。
您还可以看到在XML中添加了参数。单击“文本”选项卡切换到 XML 视图,并注意您的参数已添加到接收参数的目的地。示例如下:
<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)
}
通过这种方式,您可以对片段或片段之间的活动执行此操作。
由于我的需要,我最近开始研究更高级的 Android 开发。 从导航组件开始,我了解了使用片段的方法以及使用 SafeArgs
传递数据的可能性虽然我能够理解并找到有关如何在不同片段之间传递数据的信息,但我没有找到有关如何将数据从实际 Activity 传递到片段的任何信息。
这里是我何时需要这个的简短描述:
<- 登录屏幕 ->(主 activity)- 无碎片,简单登录 ACTIVITY
-- 用户输入数据
-- 点击登录
-- 登录成功
-- 保存和发送 HTTP 响应数据以及其他必要信息并传输到配置文件页面
<- 个人资料页面 -> (ProfilePage Activity) 抽屉式布局使用 NavHostFragment 显示不同的片段:[个人资料页面]、[联系信息]、[支付卡]
-- 个人资料页面片段
-- 提取 Main Acitivity 发送的数据并使用它来更改 ProfilePage Fragment TextViews 的值
这是我遇到问题的地方 - 我不知道如何将数据从实际 Activity 传递到 Fragment,尤其是当我知道有所谓的 SafeArgs 时,我对.
有人可以帮助我更好地理解这一点,或者至少为我指明正确的方向吗?
是的,如您所料,您必须使用安全参数才能将其作为最佳选择。
在导航编辑器中,单击接收参数的目的地。 在“属性”面板中,单击添加 (+)。 在出现的添加参数 Link window 中,输入参数名称、参数类型、参数是否可为空以及默认值(如果需要)。 单击添加。请注意,该参数现在出现在“属性”面板的“参数”列表中。 接下来,单击将您带到此目的地的相应操作。在“属性”面板中,您现在应该会在“参数默认值”部分看到新添加的参数。
您还可以看到在XML中添加了参数。单击“文本”选项卡切换到 XML 视图,并注意您的参数已添加到接收参数的目的地。示例如下:
<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)
}
通过这种方式,您可以对片段或片段之间的活动执行此操作。