Android Studio:将参数从片段传递到片段并使用它
Android Studio: Passing argument from fragment to fragment and using it
我正在关注官方 tutorial 的 Android 开发,但在使用 SafeArgs 传递参数时遇到问题。这是第一个片段中将参数传递给第二个片段的代码:
view.findViewById<Button>(R.id.random_button).setOnClickListener {
val showCountTextView = view.findViewById<TextView>(R.id.textview_first)
val currentCount = showCountTextView.text.toString().toInt()
val action = FirstFragmentDirections.actionFirstFragmentToSecondFragment(currentCount)
findNavController().navigate(action)
}
但是,我不太了解参数实际上是如何传递到第二个片段然后显示在 header 中的;事实上,我的 header 只是显示:
因为header文本实际上是在一个字符串资源文件中。 (strings.xml)。本教程没有进一步详细说明,并假设它应该可以工作,但在这里我们可以看到它只显示“%d”而不是参数。 strings.xml中的相关行:
这是一个介于 0 和 %d 之间的随机数。
如何使用 SafeArg 显示传递的参数,看看我的 header 如何显示字符串资源?本教程没有说明需要修改资源文件或第二个片段中的任何内容class,所以我迷路了。
val count = args.myArg
这一行是你从中获取参数的地方(基本上 android 正在为你做所有事情 - 意味着检索参数并将其传递给你获取它的片段,确保它的类型...)
现在这是我认为可能存在一些误解的行:
val countText = getString(R.string.random_heading, count)
这里我们正在做的是从 strings.xml 文件中获取字符串:
Here is a random number between 0 and %d.
但是 getString 方法也在做的是它正在格式化字符串(像 java 中的 String.format 方法一样)所以它采用后面的参数(这里是计数)并替换它在字符串中。
现在您的 countText 值为 Here is a random number between 0 and 15.
如果 count = 15
,即您从上一个片段传下来的数字。
然后在教程中它像这样设置 textview 的值:
view.findViewById<TextView>(R.id.textview_header).text = countText
我正在关注官方 tutorial 的 Android 开发,但在使用 SafeArgs 传递参数时遇到问题。这是第一个片段中将参数传递给第二个片段的代码:
view.findViewById<Button>(R.id.random_button).setOnClickListener {
val showCountTextView = view.findViewById<TextView>(R.id.textview_first)
val currentCount = showCountTextView.text.toString().toInt()
val action = FirstFragmentDirections.actionFirstFragmentToSecondFragment(currentCount)
findNavController().navigate(action)
}
但是,我不太了解参数实际上是如何传递到第二个片段然后显示在 header 中的;事实上,我的 header 只是显示:
因为header文本实际上是在一个字符串资源文件中。 (strings.xml)。本教程没有进一步详细说明,并假设它应该可以工作,但在这里我们可以看到它只显示“%d”而不是参数。 strings.xml中的相关行:
这是一个介于 0 和 %d 之间的随机数。
如何使用 SafeArg 显示传递的参数,看看我的 header 如何显示字符串资源?本教程没有说明需要修改资源文件或第二个片段中的任何内容class,所以我迷路了。
val count = args.myArg
这一行是你从中获取参数的地方(基本上 android 正在为你做所有事情 - 意味着检索参数并将其传递给你获取它的片段,确保它的类型...)
现在这是我认为可能存在一些误解的行:
val countText = getString(R.string.random_heading, count)
这里我们正在做的是从 strings.xml 文件中获取字符串:
Here is a random number between 0 and %d.
但是 getString 方法也在做的是它正在格式化字符串(像 java 中的 String.format 方法一样)所以它采用后面的参数(这里是计数)并替换它在字符串中。
现在您的 countText 值为 Here is a random number between 0 and 15.
如果 count = 15
,即您从上一个片段传下来的数字。
然后在教程中它像这样设置 textview 的值:
view.findViewById<TextView>(R.id.textview_header).text = countText