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{}、現在呼び出されている 1 つのメソッドで呼び出されます。public String returnPass(){}

4

2 に答える 2

2

The functions getAssets and getResources should be called from a Context.

If you call it from within an Activity class it doesn't need a prefix, but otherwise you'd need to pass the context to the class that needs the functions and call e.g. 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 に答える