2012-03-04 91 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) 

}