Использование id в качестве requestCode для startActivityForResult из FragmentActivity

Android Docs говорят примерно в ID XML resource:

уникальный идентификатор ресурса, определенный в XML. [...] который вы можете использовать [...] как уникальное целое число для использования в коде вашего приложения (например, в качестве идентификатора для диалога или кода результата).

Я создал request в ids.xml

<item name="request" type="id" />

Его значение равно -1000003. Я хочу использовать его как requestCode для startActivityForResult из FragmentActivity. Но, как описано здесь, requestCode должно быть 16 бит, то есть диапазон от от 0 до 65535. Таким образом, значение request недопустимо (оно отрицательное и также выходит за пределы допустимого диапазона). и его использование вызывает эту ошибку:

java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode

Хотя я могу использовать любое допустимое целое число, но его уникальность может быть нарушена во время поддержки/разработки приложения. Есть ли способ решить эту проблему?


person hasanghaforian    schedule 12.02.2019    source источник
comment
Ошибка правильная, вы можете использовать ее как result code (как сказано в документации), а не как requestCode   -  person Vladyslav Matviienko    schedule 12.02.2019
comment
@VladyslavMatviienko Да, но я хочу быть уверен, что мой код запроса уникален.   -  person hasanghaforian    schedule 12.02.2019
comment
по какой причине вы хотите, чтобы он был уникальным?   -  person Vladyslav Matviienko    schedule 12.02.2019
comment
@VladyslavMatviienko Сегодня я использую произвольный requestCode и после отладки обнаружил, что его значение совпадает со значением другого requestCode, которое было установлено в другом файле.   -  person hasanghaforian    schedule 12.02.2019
comment
Просто используйте некоторый класс Constants.java, где вы просто определяете все коды запросов, чтобы убедиться, что они уникальны.   -  person Vladyslav Matviienko    schedule 12.02.2019
comment
@VladyslavMatviienko Да, кажется, это единственный способ. Спасибо.   -  person hasanghaforian    schedule 12.02.2019


Ответы (1)


Ваше значение является отрицательным числом, но диапазон состоит только из положительных чисел. Эта ошибка может быть из-за этой причины

person Kartika Vij    schedule 12.02.2019
comment
Я знаю это. Но и это выходит за пределы диапазона. - person hasanghaforian; 12.02.2019