2016-07-30 10 views
1

私のアンドロイドスタジオプロジェクト@ res/drawable/conan_obrian.png内にあるファイルを開こうとしています。ただし、java.io.FileNotFoundExceptionがスローされました。私は結果のない別のパス名の組み合わせを試しました。Androidは実行時にリソースファイルをどこから探しますか?

このスニペットは、例外がスローされます。

InputStream is; 
    byte[] buffer = new byte[0]; 
    try { 
     final AssetManager assetMgr = context.getResources().getAssets(); 
     is = assetMgr.open("drawable/conan_obrian.png"); 
     buffer = new byte[is.available()]; 
     is.read(buffer); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    serverAPI.register(userName, Base64.encodeToString(buffer,Base64.DEFAULT).trim(), myCrypto.getPublicKeyString()); 

My project's file tree structure

+0

アセットフォルダに実際にドロワブルフォルダが含まれていますか? –

+0

AS> 2.0にデフォルトアセットフォルダはありますか? - それを見つけることができません。 – XYseven

+0

私が知っているわけではありません。ただし、[ファイル]> [新規作成]メニューを使用してアセットフォルダを作成することもできます。そうでなければ、私の答えはあなたが探しているものだと思います。バイト配列が必要な理由は明確ではありません –

答えて

3

あなたがassets/drawableフォルダを持っていましたが、あなたは、リソースをロードしようとしているので、それはR.drawable.conan_obrianであるかどうあなたのコードが正しいだろう。

たとえば、ImageView上でこのIDをsetResourceDrawableに使用できます。

それともres/ディレクトリの下に何がR.javaファイル内の整数の長いリストにロードされる

Drawable d = getResources().getDrawable(R.drawable.conan_obrian) 

でそのIDを使用したDrawableオブジェクトを取得することができます。

+0

私はレイアウトリソースとして.pngファイルを使用していません。ですから、私はR.drawable.conan_obrianのようなDrawableオブジェクトへの参照を使用できないと思います。 – XYseven

+0

レイアウトフォルダにはありません...私は 'R.layout'と私は言っていませんでしたか? –

関連する問題