我想从片段到活动传递带有额外意图的数据,通常我在活动到活动之间使用anko通用意图
startactivity<secondActivity>("values" to "123")
但就我而言,我想像这样将数据从片段传递到活动
activity?.startactivity<secondActivity>("values" to "123")
当我想在活动中获得String Extra时,
val values: String = ""
val intent = intent
values = intent.getStringExtra("values")
我遇到错误
intent.getstringextra must not be null
您对我的案件有解决方案吗?因为我这样做是为了让活动从活动中获得更多收益
答案 0 :(得分:1)
问题是您已将values
变量声明为不可为空,即编译器将:
null
或可能的null
值 Intent.getStringExtra
可能返回null
,因此编译器在抱怨。
您可以将values
变量声明为null
,并在代码中处理这种情况,例如:
val values: String? = intent.getStringExtra("values")
if(values == null){
finish()
return;
}
或在意图没有多余values
的情况下分配默认值:
val values = intent.getStringExtra("values") ?: "Default values if not provided"
答案 1 :(得分:0)
使用Kotlin Null Safety。如果为null,则不会分配值
var values: String = ""
val intent = intent
intent.getStringExtra("values")?.let {
values=it
}
答案 2 :(得分:0)
因为您声明值不能为null,所以如果您希望值可以为null,则应这样声明
var values:String? = null
或者,如果您想在值为null时获取默认值,则可以执行以下操作
values = if (intent.getStringExtra("values")==null) "" else intent.getStringExtra("values")
答案 3 :(得分:0)
如果您从小部件获取数据,请确保已将其转换为String。
有效内容:字符串 = YourTextWidget.text。 toString()