私は内部ストレージからImageViewを使用しています。フローは次のとおりです。私のInputStreamが動作しているか、適切な値を持っているかを知る方法
1)内部ストレージ内のファイル名が既に 2を存在する場合、それは、ImageViewの 3にビットマップとしてそれを使用しない場合)確認してください)そうでない場合は、URLからダウンロードし、ImageViewのにビットマップ、およびコピーとして設定しますtempImageViewレイアウト
LOでImageViewのに参照しているグローバルに宣言ImageViewのハンドラです
try{
InputStream fis = holder.mImageView.getContext().openFileInput("file.png");
tempImageView.setImageBitmap(BitmapFactory.decodeStream(fis));
fileFound = true;
fis.close();
}
catch(IOException e){
try{
FileOutputStream fos = holder.mImageView.getContext().openFileOutput("file.png",Context.MODE_APPEND);
thumbPhotoRef.getStream(
new StreamDownloadTask.StreamProcessor() {
@Override
public void doInBackground(StreamDownloadTask.TaskSnapshot taskSnapshot,
InputStream inputStream) throws IOException {
byte[] buffer = new byte[8192];
int size;
tempImageView.setImageBitmap(BitmapFactory.decodeStream(inputStream));
while ((size = inputStream.read(buffer)) != -1) {
fos.write(buffer, 0, size);
}
fos.close();
// Close the stream at the end of the Task
inputStream.close();
}
});
}
catch(IOException e){
}
}
として内部ストレージ内のファイルへのストリーム
実際のコードがありますImage Bitmapが割り当てられるgetStreamメソッド内のgic。 tempImageView.setImageBitmap(BitmapFactory.decodeStream(inputStream));
これは実際には機能し、画像はレイアウト内で適切に更新されます。この同じメソッドでは、同じ入力ストリームが "file.png"を指す "fos" FileOutputStream変数に書き込まれていることに注意してください。
デバッグには何も問題はありませんが、何らかの形で、ファイルが開かれたときに既にImageViewのビットマップを設定できませんでした。 openFileInputはファイルに移動しないため、ファイルが存在していると確信しています。Exceptionはもう見つかりません。
InputStream fis = holder.mImageView.getContext().openFileInput("file.png");
tempImageView.setImageBitmap(BitmapFactory.decodeStream(fis));
どれ何が悪かったのかアイデア、またはどのように私はそれが実際にsetImageBitmapが理解できる任意のビットマップデータが含まれている場合、デバッグモードでの変数FISの値が見ることができますか?ありがとう