只能将低16位用于requestCode

时间:2019-03-17 18:12:50

标签: android-intent

我遇到错误“只能为请求代码使用低16位”。 情况如下: 我正在开始这样的意图

startActivityForResult(i, R.integer.intent_someName);

所以基本上传递一种常量作为requestCode。 我在资源中输入了“常量”,如下所示:

<integer name="intent_someName">100</integer>

现在我看到了更多的帖子,问题是一个负数或一个高于32655的数字(或接近这个数字)。两者都不是这样。那么为什么会出错呢? 如果我将其放在我的代码中,它将起作用:

int test = 100;
Intent i = new Intent(MainActivity.this, someNameActivity.class);
startActivityForResult(i, test);

我似乎将资源中的整数作为int的其他含义为何? 我迷路了。 是的,我可以简单地对int值进行硬编码,但这会遗漏要点。

解决过程中的任何内在都会有所帮助。

2 个答案:

答案 0 :(得分:1)

尝试更改:

startActivityForResult(i, R.integer.intent_someName);

收件人:

startActivityForResult(i, getResources().getInteger(R.integer.intent_someName));

产生原始错误的原因是,您直接引用了R.integer,而不是使用getResources()从integer.xml文件中获取整数值。

希望这会有所帮助!

答案 1 :(得分:0)

最后,我通过创建一个抽象类解决了这个问题。 该类以“ public static final ....”的形式保存al常数。

也许不是最好的选择,但效果很好