0

我正在尝试从 res/raw 加载文本文件。我查看了几个代码片段并尝试实现一些方法,但似乎没有一个对我有用。我目前正在尝试工作的代码是这样的

TextView helloTxt = (TextView)findViewById(R.id.hellotxt);
        helloTxt.setText(readTxt());
    }

    private String readTxt() {

     InputStream inputStream = getResources().openRawResource(R.raw.hello);

     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

     int i;
     try {
         i = inputStream.read();
         while (i != -1) {
             byteArrayOutputStream.write(i);
             i = inputStream.read();
         }
         inputStream.close();
     }
     catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
     }

     return byteArrayOutputStream.toString();

但它与所有其他人一样面临同样的问题。

a)(TextView)findViewById(R.id.hellotxt);说它贬值了,Eclipses 建议迁移代码。

b)getResources()无法识别,只是建议我添加一个名为 getResources() 的方法。

最初我想使用资产文件夹,但得到与 b) 相同的错误,但使用 getAssets()。

这是我正在实现的一个单独的类文件public class PassGen{},目前用一种方法调用它public String returnPass(){}

4

2 回答 2

2

应该从上下文调用函数 getAssets 和 getResources。

如果您从 Activity 类中调用它,则不需要前缀,否则您需要将上下文传递给需要函数的类并调用例如 context.getAssets()。

于 2012-05-02T06:53:32.910 回答
1

活动课:

public class ReadFileActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Read read = new Read(getApplicationContext());

    TextView helloTxt = (TextView) findViewById(R.id.hellotxt);
    helloTxt.setText(read.readTxt());
}
}

阅读类:

public class Read {

Context ctx;

public Read(Context applicationContext) {
    // TODO Auto-generated constructor stub

    this.ctx = applicationContext;
}


public String readTxt() {

    InputStream inputStream = ctx.getResources().openRawResource(R.raw.hello);

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    int i;
    try {
        i = inputStream.read();
        while (i != -1) {
            byteArrayOutputStream.write(i);
            i = inputStream.read();
        }
        inputStream.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return byteArrayOutputStream.toString();
}
}
于 2012-05-02T07:20:46.780 回答