Может кто-нибудь объяснить, почему значение идентификатора ресурса 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 ... }
Это может произойти из-за модели памяти Java.В котлинском языке все примитивы превратились в объекты.Таким образом, в вашей функции вы получаете не точное значение, а ссылку на него.
Возможно, вы получите целочисленное переполнение.Причина в том, что ваше целое число слишком большое.
В компьютерном программировании переполнение целого числа происходит, когда арифметическая операция пытается создать числовое значение, выходящее за пределы диапазона, который может быть представлен заданным числом.цифр - либо больше максимального, либо ниже минимального представимого значения.
См. Ссылку: https://en.wikipedia.org/wiki/Integer_overflow
Решение не работает со значениями R.id, а только передает их как ресурсы.
R.id