传递给函数时Android资源的值不同

时间:2019-03-04 08:02:31

标签: android kotlin navigation android-resources android-jetpack

谁能解释为什么传递给函数之前和之后的android资源id(R.id.navigation_news)的值不同?

Before pass to function

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

After

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

2 个答案:

答案 0 :(得分:0)

可能会出现整数溢出。原因是您的整数太大。

  

在计算机编程中,当算术运算试图创建一个数值范围之外的整数值时,整数溢出发生,该数值范围可以用给定的数字位数表示-大于或小于最大可表示值。

查看链接: https://en.wikipedia.org/wiki/Integer_overflow

该解决方案不适用于R.id值,而只能将它们作为资源传递。

答案 1 :(得分:0)

它可能由于Java内存模型而发生。用科特林语言,所有原语都变成了对象。因此,在您的函数中,您收到的不是确切值,而是对其的引用。