ваша трассировка стека говорит, что при вызове photo.setOnClickListener
значение photo
равно нулю. Ваша проблема не относится к onActivityResult
, просто установите photo
, как это, прежде чем звонить photo.setOnClickListener
:
photo = findViewById(R.id.photo_id);// replace photo_id with id of photo
photo.setOnClickListener {
val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/"
startActivityForResult(intent, 0)
}
Вы сказали:
этот код выполняется, если я использую фрагмент Activity NOT
Сначала вы должны вызвать startActivityForResult()
из фрагмента, чтобы получить его результат в этом фрагменте.
Во-вторых, при вызове startActivityForResult()
сначала вызывается onActivityResult()
Деятельности, затем onActivityResult()
фрагмента НО , если вы переопределили onActivityResult()
действия и не вызывали super.onActivityResult()
onActivityResult()
фрагментов не будет называться
Таким образом, не переопределяйте onActivityResult()
из действия или если вы переопределили его, а также хотите, чтобы фрагмент onActivityResult()
был вызван, просто вызовите super.onActivityResult()
в onActivityResult()
действия.
Если вы не можете пойти по этому пути, вы можете просто переместить свой код в необязательный метод фрагмента, а затем вызвать этот метод из onActivityResult
из Activity.