2011-12-19 9 views
0

私のアプリケーションでは、画像としてtableLayoutの内容をフォルダに保存します。ユーザーが保存された画像からファイルを開くことを許可するために、これらのファイルの名前を含むテキストファイルを作成しました。これらのファイル名は後でアレイ(ファイル)にロードされます。ユーザーは「開く」をクリックしてファイル名のリストを表示し、開くファイル名を選択します。私はファイルを開くために次のコードを使用しています。私はそれをしようとすると、sdcardに保存されている画像ファイルを開くことができません

final String imageInSD = extStorageDirectory+"/myFolder/"+files[which]; 
//where 'files' is an array of strings and contains the names of files. 
//and 'which' is the index of the selected element in the list 
Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); 
ImageView ivv=(ImageView) findViewById(R.id.imageView); 
ivv.setImageBitmap(bitmap); 

何も私は、次の

final String imageInSD = extStorageDirectory+"/myFolder/myFile.PNG"; 
Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); 
ImageView ivv=(ImageView) findViewById(R.id.imageView); 
ivv.setImageBitmap(bitmap); 

を試してみましたが、それはのmyFileという名前のイメージを示し起こりません。 正しいファイル名とパスを取得しているかどうかはすでに確認済みですが、正しいと思われます。 (リストのmyFile.PNGをクリックし、パスを表示すると "/mnt/sdcard/myFolder/myFile.PNG"となります)。

最初のコードを使用すると、なぜ機能しないのですか?

答えて

1

文字列の連結は、パスを結合するのには適していません。 File constructorを使用する方が良いです。

File directory = new File(extStorageDirectory, "myFolder"); 
File fileInDirectory = new File(directory, files[which]); 
Bitmap bitmap = BitmapFactory.decodeFile(fileInDirectory.getAbsolutePath()); 
+0

ありがとうございます。すぐに試してみてください! – Anila

+0

私は同じ結果を持っています:( – Anila

+0

あなたのコードは正しいので、別のところに問題があります。改行文字のように余分な空白や不要な文字がファイルにあることを確認してください。 – Dalmas

関連する問題