J2ME では、次のようにしました。
getClass().getResourceAsStream("/raw_resources.dat");
しかし、Androidでは、これで常にnullになります。なぜですか?
J2ME では、次のようにしました。
getClass().getResourceAsStream("/raw_resources.dat");
しかし、Androidでは、これで常にnullになります。なぜですか?
raw ファイルの場合は、res ディレクトリ内に raw フォルダーを作成してgetResources().openRawResource(resourceName)
から、アクティビティから呼び出すことを検討する必要があります。
InputStream raw = context.getAssets().open("filename.ext");
Reader is = new BufferedReader(new InputStreamReader(raw, "UTF8"));
場合によっては、生成された ID の代わりに画像名を使用して、drawable または raw フォルダーから画像を取得する必要があります。
// Image View Object
mIv = (ImageView) findViewById(R.id.xidIma);
// create context Object for to Fetch image from resourse
Context mContext=getApplicationContext();
// getResources().getIdentifier("image_name","res_folder_name", package_name);
// find out below example
int i = mContext.getResources().getIdentifier("ic_launcher","raw", mContext.getPackageName());
// now we will get contsant id for that image
mIv.setBackgroundResource(i);
TextView txtvw = (TextView)findViewById(R.id.TextView01);
txtvw.setText(readTxt());
private String readTxt()
{
InputStream raw = getResources().openRawResource(R.raw.hello);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
int i;
try
{
i = raw.read();
while (i != -1)
{
byteArrayOutputStream.write(i);
i = raw.read();
}
raw.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return byteArrayOutputStream.toString();
}
TextView01:: linearlayout 内の txtview hello:: res/raw フォルダー内の .txt ファイル (その他のフォルダーにも同様にアクセスできます)
2行はonCreate()メソッドで書かれた2行です
残りはアクティビティを拡張するクラスで記述します!!
getClass().getResourcesAsStream()
Androidで正常に動作します。開こうとしているファイルが APK に正しく埋め込まれていることを確認してください (APK を ZIP として開きます)。
通常、Android では、そのようなファイルをassets
ディレクトリに配置します。したがって、プロジェクトraw_resources.dat
のサブディレクトリに配置すると、最終的に APK のディレクトリになり、次を使用できます。assets
assets
getClass().getResourcesAsStream("/assets/raw_resources.dat");
assets
ファイルがAPKのディレクトリに配置されないように、ビルド プロセスをカスタマイズすることもできます。