我遇到了问题,而且我不知道如何修复它:
我想在AndroidStudio中为结果启动一个活动,所以之前我使用的是startActivityForResult(intent,1);
,一切正常。
但随着我的项目变得越来越大,很难跟踪已经使用过的requestCodes,所以我想把它们全部保存在一个地方。
因此我尝试了这个:
startActivityForResult(intent, R.integer.request_code_for_something);
xml-Tag看起来像这样:
<item name="request_code_for_something" type="integer"> 1 </item>
到目前为止,这么好。一切都正确加载,但当我达到&#34; startActivityForResult&#34; -Statement时,抛出以下异常:
java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode
at android.support.v4.app.BaseFragmentActivityApi14.checkForValidRequestCode(BaseFragmentActivityApi14.java:79)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:717)
at company_name.project_name.someClass.someFunction(someClass.java:565)
at android.view.View.performClick(View.java:5640)
at android.view.View$PerformClick.run(View.java:22455)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6165)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
我是否遗漏了某些东西,或者说这是不可能的?
编辑:我知道我不能使用高于32.767的值,但这并不能解决问题。
提前致谢。
答案 0 :(得分:1)
R.integer.request_code_for_something
不会返回xml中的整数使用集。相反,它为您提供R class中指定的整数。
public static final int request_code_for_something=0x7f040003;
获取资源值。使用getResource()
getResources().getInteger(R.integer.request_code_for_something)