使用列表视图(类型化数组)时java android中出现ArrayIndexOutOfBounds异常
这是我的字符串文件使用列表视图(类型化数组)时java android中出现ArrayIndexOutOfBounds异常,java,android,Java,Android,这是我的字符串文件 for (int i = 1; i < 10; i++){ String str = "weblinks_" + i; try { details = res.getIdentifier(str, "array", getPackageName()); file = true; } catch (Resources.NotFoundException e) { file = false; }
for (int i = 1; i < 10; i++){
String str = "weblinks_" + i;
try {
details = res.getIdentifier(str, "array", getPackageName());
file = true;
} catch (Resources.NotFoundException e) {
file = false;
}
if (file) {
typedArray = res.obtainTypedArray(details);
for (int k = 0; k < typedArray.length(); k++) {
MenuItem = typedArray.getString(k);
if (k == 0) {
navDrawerItems.add(new NavDrawerItem(MenuItem));
}
}
}
现在我的问题是数组索引越界异常和应用程序崩溃。
上面的代码可以显示weblinks_1、weblinks_2、weblinks_3…最多n个,但是如果我从字符串中删除一个数组项,我会得到arrayIndexOutofBounds异常
请任何人帮助解决此问题…请删除布尔文件变量并按以下方式进行更改。它将处理Resource.NotFoundException
<array name="weblinks_1">
<item>Home</item>
<item>Home</item>
</array>
<array name="weblinks_2">
<item>wallet</item>
<item>wallet</item>
</array>
<array name="weblinks_3">
<item>Recharge</item>
<item>recharge</item>
</array>
<array name="weblinks_4">
<item>Account</item>
<item>account</item>
</array>
<array name="weblinks_5">
<item>Notifications</item>
<item>notifications</item>
</array>
<array name="weblinks_6">
<item>Privacy</item>
<item>privacy</item>
</array>
<array name="weblinks_7">
<item>Facebook</item>
<item>facebook</item>
</array>
<array name="weblinks_8">
<item>Twitter</item>
<item>Twitter</item>
</array>
对于arrayIndexOutofBounds异常,需要更多代码加上logcat报告可能与硬编码值有关,如for循环中的10。对于int i=1;i<10;i++{那么你是说应用程序会像那样崩溃吗?还是只有当你删除数组项时才会崩溃?没错,当我从字符串中删除数组时,可能会出现两个错误1.ResourceNotFoundException 2.ArrayIndexOutOfBounds exception
for (int i = 1; i < 10; i++){
String str = "weblinks_" + i;
try {
details =this.getResources().getIdentifier(str, "array", this.getPackageName());
typedArray = getResources().obtainTypedArray(details);
for (int k = 0; k < typedArray.length(); k++) {
MenuItem = typedArray.getString(k);
if (k == 0) {
Log.e("String from" + str,MenuItem);
}
}
} catch (Resources.NotFoundException e) {
}
}