Выберите сырой файл по номеру в Android - PullRequest
0 голосов
/ 29 октября 2011

В папке raw этого проекта есть 43 файла с именами в диапазоне от note1 до note43. Когда задано определенное число, эта нота воспроизводится с помощью медиаплеера, который требует использования R.raw.filename. Как я могу использовать переменную вместо имени? Пример:

int soundNum = 23;
String vaiableName = "note" + soundNum;
mp = MediaPlayer.create(this, R.raw.variableName);

Ответы [ 2 ]

1 голос
/ 29 октября 2011

Я думаю, это то, что вы ищете.

public static int getResId(String variableName, Class<?> c) {
    Field field = null;
    int resId = 0;
    try {
        field = c.getField(variableName);
        try {
            resId = field.getInt(null);
        } catch (Exception e) {
            e.printStackTrace();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return resId;
}

в вашем случае:

mp = MediaPlayer.create(this, getResId(vaiableName, R.raw.class));

Я думаю, что нашел этот кусок кода в другом посте здесь на SOили другой сайт, так что эти кредиты идут к нему / ней.Я использую его во многих своих проектах для Android.

0 голосов
/ 29 октября 2011

Используйте API Resource.getIdentifier () .

...