从android中的xml数组中获取资源

时间:2015-12-22 20:52:52

标签: java android arrays android-mediaplayer android-xml

我在xml文件中有一个数组:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="sounds_array">
        <item>R.raw.fart</item>
        <item>R.raw.beep33</item>
    </array>
</resources>

我想创建一个媒体播放器,以便从我的raw文件夹中播放这些声音。

mSoundsArray = mContext.getResources().obtainTypedArray(R.array.sounds_array);


mediaPlayer = MediaPlayer.create(mContext, mSoundsArray.getResourceId(0, -1));
                mediaPlayer.start();

但是出乎预期的结果我收到了这个错误:

  

引起:android.content.res.Resources $ NotFoundException:Resource   ID#0xffffffff

任何想法如何从这个数组中获取resourceId

1 个答案:

答案 0 :(得分:4)

这就是我做同样声音的方式:

 Resources res = getResources();
        final TypedArray sounds = res.obtainTypedArray(R.array.sounds_array);
        int[] resIds = new int[sounds.length()];
        for (int i = 0; i < sounds.length(); i++) {
            resIds[i] = sounds.getResourceId(i, -1);
        }
sounds.recycle();

更改:

 <array name="sounds_array">
    <item>R.raw.fart</item>
    <item>R.raw.beep33</item>
</array>

<string-array name="select_sounds">       
   <item>@raw/fart</item>
   <item>@raw/beep33</item>
</string-array>