3

res / rawフォルダーに「book1tabs.txt」というファイルがありますが、一般的には何と呼ばれるのかわかりません。次に、次のようなことをする必要があります。

InputStream in = this.mCtx.getResources().openRawResource(R.raw.book1tabs);

しかし、私は次のような文字列変数を使用したい

String param = "book1tabs";

そして、同じ入力ストリームを開くことができます。

これを行う方法はありますか?

ありがとう

4

2 に答える 2

7

あなたはこのようなことをすることができます

String param = "book1tabs";

InputStream in = this.mCtx.getResources().openRawResource(mCtx.getResources().getIdentifier(param,"raw", mCtx.getPackageName()));

getIdentifier()R.java渡した特定のパラメータのIDを返します。

正確には次のようになります

  • パッケージ名をマップします
  • 指定したtypeDefに移動します
  • typeDefで指定したリソース名を検索します

詳細については、http://developer.android.com/reference/android/content/res/Resources.htmlをご覧ください

于 2012-08-07T04:14:43.540 に答える
2

このメソッドは、あらゆる種類のリソースを文字列名でプルするのに非常に便利だと思います...

    @SuppressWarnings("rawtypes")
public static int getResourceId(String name,  Class resType){

    try {
        Class res = null;
        if(resType == R.drawable.class)
            res = R.drawable.class;
        if(resType == R.id.class)
            res = R.id.class;
        if(resType == R.string.class)
            res = R.string.class;
                    if(resType == R.raw.class)
            res = R.raw.class;
        Field field = res.getField(name);
        int retId = field.getInt(null);
        return retId;
    }
    catch (Exception e) {
       // Log.d(TAG, "Failure to get drawable id.", e);
    }
    return 0;
}

これにより、数値IDが返されます(そのようなリソースが存在する場合)。クラスパスインR.drawableと文字列の場合、xmlベースのID名が何であれ。

簡単にアクセスできるように、私は常にこの方法をすべてのプロジェクトにぶら下げています。

于 2012-08-07T04:19:29.950 に答える