intent.getStringExtra 不能为空 kotlin

rah*_*710 5 android-intent kotlin

我想将带有额外意图的数据从片段传递到活动,通常我使用 anko 通用意图从活动到活动

startactivity<secondActivity>("values" to "123")
Run Code Online (Sandbox Code Playgroud)

但就我而言,我想将数据从片段传递到这样的活动

activity?.startactivity<secondActivity>("values" to "123")
Run Code Online (Sandbox Code Playgroud)

当我想在我的活动中获得 String Extra 时,

val values: String = ""
val intent = intent
values = intent.getStringExtra("values")
Run Code Online (Sandbox Code Playgroud)

我收到错误

intent.getstringextra must not be null
Run Code Online (Sandbox Code Playgroud)

你对我的情况有解决方案吗?因为我这样做是为了从活动到活动中获得额外的收益,没问题

mie*_*sol 8

问题是您已将values变量声明为不可为空,即编译器将:

  • 检查你自己不应该分配null或可能的null
  • 必要时插入运行时检查以实现安全

Intent.getStringExtra可以返回null,因此编译器抱怨。

您可以values尽可能声明变量null并在代码中处理这种情况,例如:

val values: String? = intent.getStringExtra("values")
if(values == null){
   finish()
   return;
}
Run Code Online (Sandbox Code Playgroud)

或者在意图没有values额外的情况下分配一个默认值:

val values = intent.getStringExtra("values") ?: "Default values if not provided"
Run Code Online (Sandbox Code Playgroud)