Как передать данные в startActivityForResult () и вернуть их обратно в onActivityResult ()? - PullRequest
0 голосов
/ 08 июня 2019

Вот мои startActivityForResult():

val initialPosition = frame.tag as Int
val currentPosition = constraint.indexOfChild(frame)
Log.d(TAG, "initial position: $initialPosition") // prints initial position: 2
Log.d(TAG, "current position: $currentPosition") // prints current position: 2
val galleryIntent = Intent().apply {
  type = "image/*"
  action = Intent.ACTION_PICK
  putExtra("initialPosition", initialPosition)
  putExtra("currentPosition", currentPosition)
  setResult(5)
}
startActivityForResult(Intent.createChooser(galleryIntent, "Pick image"), PICK_IMAGE_REQUEST_CODE)

Однако я не могу получить данные здесь:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (resultCode == Activity.RESULT_OK){
        Log.d(TAG, "ResultCode: $resultCode SUCCESS") // prints -1 SUCCESS
    }
    when (requestCode){
        PICK_IMAGE_REQUEST_CODE -> {
            Log.d(TAG, "${data?.getIntExtra("initialPosition", 0)}") // prints 0
            Log.d(TAG, "${data?.extras?.getInt("initialPosition")}") // prints 0
            Log.d(TAG, "${data?.extras?.getInt("currentPosition")}") // prints 0
        }
    }
    super.onActivityResult(requestCode, resultCode, data)
}

Есть идеи почему?

1 Ответ

0 голосов
/ 08 июня 2019

setResult() не установит код результата galleryIntent. Тот, который установит этот результат, является действием, которое вы выбрали во время Intent.ACTION_PICK.

Предполагается, что вы выбрали средство выбора образа системы. Он вернет RESULT_OK (что равно -1), если вы выберите изображение, и вернет RESULT_CANCELED (что равно 0), если вы нажмете.

Обратите внимание, что вы не можете изменить то, что возвращает другое действие для resultCode, если вы используете Implicit Intent, что вы только что сделали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...