Mic*_*ato 6 android kotlin android-navigation android-architecture-components android-jetpack
新的导航组件非常棒!但是我想在我的片段之间发送"长"变量.
在导航图文件中写这个:
<argument
android:name="discussionId"
app:type="string" />
Run Code Online (Sandbox Code Playgroud)
写这个不会编译:
<argument
android:name="discussionId"
app:type="long" />
Run Code Online (Sandbox Code Playgroud)
目前,似乎我不得不将它们解析为字符串格式.它工作正常,但对我来说似乎很奇怪,我不能使用诸如long或byte或short这样的基本架构之类的原始类型.我错过了什么吗?这种功能是否会在未来开发?
使用原始包装器!它出什么问题了?
<argument
android:name="discussionId"
app:argType="java.lang.Long" />
// java.lang.Double, java.lang.Float, etc...
Run Code Online (Sandbox Code Playgroud)
与 kotlin 一起工作,甚至与安全参数一起工作,因为所有原始包装器都在实现Serializable
从1.0.0-alpha08版本开始,您可以使用很多不同的类型,我在这里找到了一个列表
"integer" -> IntType
"integer[]" -> IntArrayType
"long" -> LongType
"long[]" -> LongArrayType
"float" -> FloatType
"float[]" -> FloatArrayType
"boolean" -> BoolType
"boolean[]" -> BoolArrayType
"reference" -> ReferenceType
"reference[]" -> ReferenceArrayType
"string" -> StringType
"string[]" -> StringArrayType
null -> StringType
Run Code Online (Sandbox Code Playgroud)
和用于导航图(例如:字符串列表)
<argument
android:name="photo_url"
app:argType="string[]"
/>
Run Code Online (Sandbox Code Playgroud)
目前,您不能使用除整数,字符串,推断和引用之外的类型的安全args .一个问题已经开通要求其他类型.
但是,在使用navigate()方法导航到目标时,以编程方式传递包:
var bundle = bundleOf("key" to amount)
view.findNavController().navigate(R.id.action_id, bundle)
Run Code Online (Sandbox Code Playgroud)
您可以使用常规getArguments方法检索目标片段中的数据:
val value = arguments.getString("key")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4681 次 |
| 最近记录: |