我遇到错误“只能为请求代码使用低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值进行硬编码,但这会遗漏要点。
解决过程中的任何内在都会有所帮助。
答案 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常数。
也许不是最好的选择,但效果很好