【发布时间】:2019-02-12 07:03:33
【问题描述】:
Android Docs 说一下ID XML resource:
在 XML 中定义的 唯一 资源 ID。 [...] 您可以将其用作 [...] 唯一整数,用于您的应用程序代码(例如,作为对话框的 ID 或结果代码)。
我在ids.xml 中创建了request
<item name="request" type="id" />
它的值为-1000003。我想将它用作requestCode 的startActivityForResult 来自FragmentActivity。但正如here 所描述的,requestCode 必须是 16 位,这意味着范围是从 0 到 65535。所以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