Ресурсы Android отличаются значением при переходе к функции - PullRequest
0 голосов
/ 04 марта 2019

Может кто-нибудь объяснить, почему значение идентификатора ресурса Android (R.id.navigation_news) до и после передачи в функцию отличается?

До перехода к функции

  fun showTabFragment() {
    navigateWithStartDest(R.id.navigation_news) // R.id.navigation_news == -1000386
  }

После

  fun navigateWithStartDest(resId:Int){
    //resId == 2131362119
    //resId != R.id.navigation_news - true
    ...
  }

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Это может произойти из-за модели памяти Java.В котлинском языке все примитивы превратились в объекты.Таким образом, в вашей функции вы получаете не точное значение, а ссылку на него.

0 голосов
/ 04 марта 2019

Возможно, вы получите целочисленное переполнение.Причина в том, что ваше целое число слишком большое.

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

См. Ссылку: https://en.wikipedia.org/wiki/Integer_overflow

Решение не работает со значениями R.id, а только передает их как ресурсы.

...