2012-03-04 159 views
0

我得到一個editText,它允許用戶輸入文件名,但由於所有文件都在原始文件夾中。我試圖讓從原始文件夾中的文件,這裏的問題是,如何更改(R.raw.fileName)作爲fileName更改

String fileName = editText.getText().toString; InputStream ins = getResources().openRawResource(R.raw.my_db_file);

我怎能取代「my_db_file」,以文件名?似乎沒有讓我像這樣的代碼

InputStream ins = getResources().openRawResource(R.raw.fileName);

感謝這麼多的幫助

+0

可能的重複[如何將openRawResource()中的fileName設置爲變量](http://stackoverflow.com/questions/9554265/how-to-set-the-filename-in-the-openrawresource-可變) – CommonsWare 2012-03-04 13:07:33

回答

0

文件中的原始文件夾可以」不要在運行時中更改。我不知道爲什麼你需要讓用戶輸入文件名。據我所知,這是不可能的,因爲原始文件夾中的所有文件都應該在編譯之前定義好。

+0

看到我的答案,它可以在運行時完成。 – 2012-03-04 12:15:50

+0

@AndroidKiller我的意思是說,如果開發者已經把一個文件放在原始文件夾中說a.txt,他可以要求用戶輸入a.txt來訪問該文件,就像你一樣。但是如果開發者沒有這樣做,代碼就不能創建一個名爲a.txt的文件。所以我不明白爲什麼OP需要實現這個功能,因爲用戶不能任意輸入。 – Huang 2012-03-04 12:33:45

0

我怎能取代「my_db_file」,以文件名?似乎沒有讓我 代碼像這樣

InputStream ins = getResources().openRawResource(R.raw.fileName); 

你做解釋你的問題的一個可怕的工作,但我覺得你的問題是事實,你不能簡單地「捕獲」的字符串進入由用戶將其插入到您撥打openRawResource(R.raw.whatever_the_user_typed)的電話中。原因是基於一個簡單的事情,你需要了解哪個是R.raw.filename實際上是指靜態內部類中的靜態int。這意味着當您將文件放入原始資源時,Android資產打包工具會在編譯時創建這些資源的唯一「代碼表示」,以便您可以在代碼中引用它們。所以,問題是,爲了做你想做的事,這是很奇怪順便說一句什麼,你需要做的是這樣的:

僞代碼:

switch(the user's input) { 
    case: "foo" 
    openRawResource(R.raw.foo) 
    case: "whatever" 
    openRawResource(R.raw.whatever) 

}