Android Рабочий почему-то не извлекает значение из inputData - PullRequest
0 голосов
/ 05 февраля 2020

Вот скриншот моего представления отладки. В представлении переменных ясно видно, что intupData содержит значение для ключа, которое соответствует KEY_ISSUE_ID (issue.id), но

inputData.getString(KEY_ISSUE_ID)

приводит к null. Еще более странным является то, что в других Workers очень похожий код работает хорошо. Есть ли какие-либо предостережения, которые могут привести к такому поведению?

Кстати. Отличие этого работника в том, что он связан с кучей других работников с ArrayCreatingInputMerger. Согласно do c он должен получать выходные данные этих рабочих в качестве входных данных. Но это не похоже на получение этих данных.

выходные данные родительского OneTimeWorkRequests передаются в качестве входных данных дочерним элементам.

1 Ответ

2 голосов
/ 05 февраля 2020

Согласно документации ArrayCreatingInputMerger :

  • Если мы впервые столкнулись с ключом:
    • Если это массив поместите его в вывод
    • Если это примитив, превратите его в массив размера 1 и поместите в вывод

Итак, ваш inputData имеет массив строк размером 1, а не String.

Поэтому вы захотите использовать getStringArray() и получить первый элемент этот массив (если вы заботитесь только о первом элементе):

val issueId = inputData.getStringArray(KEY_ISSUE_ID).firstOrNull()
...