簡體   English   中英

如何在Android中使用字符串名稱調用資源?

[英]How to call resources with string name in android?

我現在正在嘗試調用資源(在我的應用程序中,它們是mp3文件和圖像)。 對於mp3文件,我的代碼如下(顯然無法正常工作!)

if(i==1)
{
hoho= MediaPlayer.create(getApplicationContext(), R.raw.univ_day1);
hoho.start();
}
else if (i==2)
{
hoho= MediaPlayer.create(getApplicationContext(), R.raw.univ_day2);
hoho.start();  
}

...

在我的應用程序中,應用程序內部有數百個mp3文件。 所以我想做的就是將代碼簡要地總結成這樣的東西。

hoho=MediaPlayer.crate(getApplicationContet(), R.raw.univ_day+"i"); //This also looks really awkward.

如果我知道如何像上面一樣寫下代碼。 如何處理原始文件的名稱和“ R.raw ....”之類的格式? 如果可以,那么我也可以對圖像資源應用類似的方法。

您可以使用public int getIdentifier (String name, String defType, String defPackage)方法按名稱獲取資源ID。 例如:

int id = getResources().getIdentifier("univ_day"+i, "raw", getPackageName());
hoho = MediaPlayer.create(getApplicationContext(), id);

我們可以列出所有原始資產的名稱,基本上是沒有擴展名的文件名,我們可以這樣做-

public void listRaw(){
    Field[] fields=R.raw.class.getFields();
    for(int count=0; count < fields.length; count++){
        Log.i("Raw Asset: ", fields[count].getName());
    }
}

接下來,您需要通過分配給該資源名稱的整數來引用它們。 您可以通過以下方式獲取此整數:

int resourceID=fields[count].getInt(fields[count]);

這與引用R.raw.yourRawFileName所獲得的int相同。

在您的代碼中,您可以像這樣使用-

hoho= MediaPlayer.create(getApplicationContext(), resourceID);
hoho.start();

接下來,您可以應用JAVA邏輯來播放上一個當前和下一個媒體文件。 如果您在這里也需要幫助,請告訴我們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM