String Array OutOfMemoryError

时间:2015-11-13 07:37:53

标签: java android arrays xml

在我正在编写的应用程序中,我正在将XML加载到Java String []中,然后将每个项目转换为对象并将这些项目添加到对象数组中。

以下是我的代码:

Java部分,带有do-while循环

ArrayList<ExpandListGroup> list = new ArrayList<ExpandListGroup>();
    ArrayList<ExpandListChild> list2 = new ArrayList<ExpandListChild>();
    ExpandListGroup gru1 = new ExpandListGroup();
    gru1.setName(getString(R.string.album_vancouver));
    String[] tempArray = getResources().getStringArray(R.array.album_array_vancouver);
    int count = 0;
    int max = tempArray.length;
    do {
        ExpandListChild ch = new ExpandListChild();
        ch.setName(tempArray[count]);
        ch.setTag(null);
        list2.add(ch);
    } while(count <= max);
    gru1.setItems(list2);
    list.add(gru1);

XML中的数组

<string name="album_vancouver">Vancouver</string>
<string name="song_vancouver_1">Future Wars</string>
<string name="song_vancouver_2">A Word Of Welcome And Of Warning</string>
<string name="song_vancouver_3">See You In Vancouver</string>
<string name="song_vancouver_4">To Withstand The Force Of Storms</string>
<string name="song_vancouver_5">He Is Here, He Is Not Afraid</string>
<string name="song_vancouver_6">The Surgeon And The Scientist</string>
<string name="song_vancouver_7">Fairmount</string>
<string name="song_vancouver_8">Untitled</string>
<string-array name="album_array_vancouver">
    <item>@string/song_vancouver_1</item>
    <item>@string/song_vancouver_2</item>
    <item>@string/song_vancouver_3</item>
    <item>@string/song_vancouver_4</item>
    <item>@string/song_vancouver_5</item>
    <item>@string/song_vancouver_6</item>
    <item>@string/song_vancouver_7</item>
    <item>@string/song_vancouver_8</item>
</string-array>

我在运行时在“list2.add(ch)”行获得java.lang.OutOfMemoryError 我能做些什么才能做到这一点?

1 个答案:

答案 0 :(得分:2)

你有无限循环,你没有在do-while语句中递增count变量。

使用ch.setName(tempArray[count++]);

此外,while条件应为count < max,否则您将获得ArrayIndexOutOfBoundsException。