You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用getString(R.string.res_name)触发IndexOutOfBoundsException异常求助

解决LevelTwoActivity启动时访问字符串资源触发的IndexOutOfBoundsException问题

嘿,我来帮你搞定这个问题!从你给出的异常栈信息来看,真正导致Activity启动失败的元凶是IndexOutOfBoundsException——说白了就是你访问字符串资源的时候,用了超出范围的索引值,或者处理资源的方式出了岔子。下面给你几个针对性的排查和解决方向:

  • 检查字符串数组的索引有效性
    如果你是通过getResources().getStringArray()获取字符串数组,然后用索引取值,一定要先确认数组长度和你用的索引是否匹配。比如数组只有3个元素(索引范围是0到2),但你硬要取索引3的值,肯定会触发这个异常。建议在访问前加个有效性判断:

    String[] targetArray = getResources().getStringArray(R.array.your_string_array);
    int useIndex = 2; // 你要使用的索引值
    if (useIndex >= 0 && useIndex < targetArray.length) {
        String resultStr = targetArray[useIndex];
        // 后续业务逻辑
    } else {
        // 这里可以加个日志或者提示,处理索引越界的情况
    }
    
  • 确认资源ID是否误用
    有时候会不小心搞混单个字符串和字符串数组的ID:比如本来想取单个字符串R.string.single_text,却写成了getStringArray(R.string.single_text);或者反过来用数组ID去调用getString()。这种错误会导致系统内部处理资源时出现索引异常,一定要核对清楚资源类型和调用方法是否匹配。

  • 排查启动时传递的参数
    如果这个索引值是从其他Activity通过Intent传过来的,比如getIntent().getIntExtra("INDEX", -1),先确认传递过来的数值是否在有效范围内。比如前一个Activity传了一个负数或者超出数组长度的值,直接拿来用就会出问题,最好先做参数校验。

  • 检查布局文件中的资源引用
    异常也可能是在加载布局的时候触发的:比如某个TextView的android:text属性引用了需要动态索引的资源,或者错误地把数组资源当成单个字符串引用了。可以尝试暂时注释掉布局中可疑的控件,逐步排查是哪个控件导致的问题。

如果按照上面的步骤还是没找到问题,把你访问字符串资源的代码片段贴出来,我能帮你更精准地定位!

内容的提问来源于stack exchange,提问作者Rahul Jidge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:21:51