谁能解释为什么传递给函数之前和之后的android资源id(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
...
}
答案 0 :(得分:0)
可能会出现整数溢出。原因是您的整数太大。
在计算机编程中,当算术运算试图创建一个数值范围之外的整数值时,整数溢出发生,该数值范围可以用给定的数字位数表示-大于或小于最大可表示值。
查看链接: https://en.wikipedia.org/wiki/Integer_overflow
该解决方案不适用于R.id
值,而只能将它们作为资源传递。
答案 1 :(得分:0)
它可能由于Java内存模型而发生。用科特林语言,所有原语都变成了对象。因此,在您的函数中,您收到的不是确切值,而是对其的引用。