【问题标题】:Using "id" as requestCode for "startActivityForResult" from FragmentActivity从 FragmentActivity 使用“id”作为“startActivityForResult”的 requestCode
【发布时间】:2019-02-12 07:03:33
【问题描述】:

Android Docs 说一下ID XML resource:

在 XML 中定义的 唯一 资源 ID。 [...] 您可以将其用作 [...] 唯一整数,用于您的应用程序代码(例如,作为对话框的 ID 或结果代码)。

我在ids.xml 中创建了request

<item name="request" type="id" />

它的值为-1000003。我想将它用作requestCodestartActivityForResult 来自FragmentActivity。但正如here 所描述的,requestCode 必须是 16 位,这意味着范围是从 065535。所以request 的值是无效的(它是负数并且也超出了边界范围)。并使用它会导致此错误:

java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode

虽然我可以使用任意有效整数,但在应用程序维护/开发期间可能会违反其唯一性。有没有办法解决这个问题?

【问题讨论】:

  • 错误是对的,您可以将其用作result code(如文档所述),而不是requestCode
  • @VladyslavMatviienko 是的,但我想确保我的 requestCode 是唯一的。
  • 有什么理由希望它独一无二?
  • @VladyslavMatviienko 今天我使用了一个任意的requestCode,调试后发现它的值与另一个文件中设置的另一个requestCode的值相同。
  • 只需使用一些Constants.java 类,您只需在其中定义所有请求代码以确保它们是唯一的

标签: android android-fragments startactivityforresult


【解决方案1】:

您的值是负数,但范围仅是正数。 这个错误可能是因为这个原因

【讨论】:

  • 我知道。但它也超出了界限范围。
猜你喜欢
  • 1970-01-01
  • 2017-08-19
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
相关资源
最近更新 更多