intent.getStringExtra不能为null kotlin

时间:2018-09-20 03:19:15

标签: android-intent kotlin

我想从片段到活动传递带有额外意图的数据,通常我在活动到活动之间使用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

您对我的案件有解决方案吗?因为我这样做是为了让活动从活动中获得更多收益

4 个答案:

答案 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()