当传递到功能时,Android Resources不同的值



任何人都可以解释为什么在传递到函数之前和之后,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
    ...
  }

您可能会得到整数溢出。原因是您的整数太大了。

在计算机编程中,当算术操作试图创建一个超出范围内的数字值时,就会发生整数溢出,该值可以用给定数量的数字表示 - 要么大于最大值或最低最小代表值。

请参阅链接:https://en.wikipedia.org/wiki/integer_overflow

该解决方案不是在R.id值上运行的,而仅作为资源传递。

可能由于Java内存模型而发生。用kotlin语言,所有原语都变成了对象。因此,在您的功能中,您不会收到确切的值,而是参考它。

相关内容

  • 没有找到相关文章

最新更新