Android Kotlin 测试 Intent putExtra Value
Android Kotlin Testing for Intent putExtra Value
android studio 4.1.1
和科特林。我是初学者,正在通过教程学习。
我有一个 activity,我在其中使用 Intent 去另一个 activity。我正在使用 intent.putExtra
:
val intent = Intent(this, WeightExercise::class.java)
intent.putExtra("POSITION", positionToString)
startActivity(intent)
在 WeightExercise activity 中,我得到传递的值:
// with line numbers:
80: var myPosition = intent.getStringExtra("POSITION").toString()
81: var position = myPosition.toInt()
这行得通。我在 POSITION
.
中得到字符串值
问题:我有另一个 activity 使用 Intent 去 WeightExercise activity。它不是通过意图传递值。发生这种情况时,WeightExercise activity 中的第 81 行(上文)会导致错误:
Caused by: java.lang.NumberFormatException: For input string: "null"
at java.lang.Integer.parseInt(Integer.java:615)
at java.lang.Integer.parseInt(Integer.java:650)
at com.johndcowan.liftit.WeightExercise.onCreate(WeightExercise.kt:81)
我已经尝试了几次 if()
来测试 null 或空值,但没有任何方法可以解决此错误。
if ( intent.getStringExtra("POSITION").toString().isNullOrEmpty() ) {...}
if ( myPosition.isNullOrEmpty() ) {...}
if ( myPosition == null ) {...}
是否有更好的方法来测试意图中的命名字符串 POSITION
?
感谢任何提示。
您可以利用 Kotlin Null Safety
如果需要,当 extra 为 null 时设置默认值。
var myPosition = intent?.extras?.getStringExtra("POSITION") ?: DEFAULT_VALUE
了解更多关于 ?:
Elvis operator
getStringExtra()
的 return 值可以为 null,但您通过使用 toString()
将其转换为可能值为 "null"
的非空字符串结果。因此,当您尝试将其转换为 Int 时,Kotlin 不会强制执行可空性。在使用 return 值时,您应该省略 toString()
并使用空安全调用 (?.
)。
val myPosition = intent.getStringExtra("POSITION")
val position = myPosition?.toIntOrNull()
if (position != null) {
//...
}
android studio 4.1.1
和科特林。我是初学者,正在通过教程学习。
我有一个 activity,我在其中使用 Intent 去另一个 activity。我正在使用 intent.putExtra
:
val intent = Intent(this, WeightExercise::class.java)
intent.putExtra("POSITION", positionToString)
startActivity(intent)
在 WeightExercise activity 中,我得到传递的值:
// with line numbers:
80: var myPosition = intent.getStringExtra("POSITION").toString()
81: var position = myPosition.toInt()
这行得通。我在 POSITION
.
问题:我有另一个 activity 使用 Intent 去 WeightExercise activity。它不是通过意图传递值。发生这种情况时,WeightExercise activity 中的第 81 行(上文)会导致错误:
Caused by: java.lang.NumberFormatException: For input string: "null"
at java.lang.Integer.parseInt(Integer.java:615)
at java.lang.Integer.parseInt(Integer.java:650)
at com.johndcowan.liftit.WeightExercise.onCreate(WeightExercise.kt:81)
我已经尝试了几次 if()
来测试 null 或空值,但没有任何方法可以解决此错误。
if ( intent.getStringExtra("POSITION").toString().isNullOrEmpty() ) {...}
if ( myPosition.isNullOrEmpty() ) {...}
if ( myPosition == null ) {...}
是否有更好的方法来测试意图中的命名字符串 POSITION
?
感谢任何提示。
您可以利用 Kotlin Null Safety
如果需要,当 extra 为 null 时设置默认值。
var myPosition = intent?.extras?.getStringExtra("POSITION") ?: DEFAULT_VALUE
了解更多关于 ?:
Elvis operator
getStringExtra()
的 return 值可以为 null,但您通过使用 toString()
将其转换为可能值为 "null"
的非空字符串结果。因此,当您尝试将其转换为 Int 时,Kotlin 不会强制执行可空性。在使用 return 值时,您应该省略 toString()
并使用空安全调用 (?.
)。
val myPosition = intent.getStringExtra("POSITION")
val position = myPosition?.toIntOrNull()
if (position != null) {
//...
}