Ваш код во втором упражнении для получения данных полностью верен. Возможен сценарий, почему он не сработал.
В основном действии переменная catItem
не равна нулю, но по некоторым причинам ее свойства, такие как name
или id
, могут быть равны нулю.
Во втором упражнении вы объявляете catId
, а title
- ненулевой тип String. Когда он достигает линии.
catId = bl.getString("catId")
потому что bl.getString("catId")
возвращает null
, и вы присваиваете значение null
непустой переменной (catId
). Вот почему приложение выбрасывает
java.lang.IllegalStateException: bl.getString ("catId") не должно быть
нуль
Решение: Если вы не уверены, что свойства catId (name, id) всегда получают ненулевое значение, тогда объявите catId
и title
во втором действии как обнуляемый тип String.
class Cards : AppCompatActivity() {
private var catId: String? = null
private var title: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
catId = intent.extras?.getString("catId")
title = intent.extras?.getString("title")
catId?.let {
// catId is not null
Log.i("TAG", "catId = $it")
}
title?.let {
// title is not null
Log.i("TAG", "title = $it")
}
}
}