У меня есть список имен файлов в списке. когда пользователь нажимает на имя файла, это изображение должно быть загружено. Я передаю имя файла через намерение, этот бит работает нормально. получающая деятельность может получить имя файла. это действие имеет собственное представление, и в этом проблема. Пользовательское представление должно быть в состоянии передать правильное имя файла, полученное в его деятельности от SDCard, и отобразить полученное растровое изображение в представлении. я могу получить имя файла в деятельности, но имя файла в представлении является нулевым. как я могу обойти это?
заранее спасибо Мэтт.
package com.tecmark;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
public class ShowDistortion extends Activity{
private static final String TAG = "*********showdistortion";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.showdistortion);
String fn = getIntent().getStringExtra("filename");
Log.e(TAG, "filename = " + fn);
final ShowDistortedBitmap sdb = (ShowDistortedBitmap)findViewById(R.id.showdistortedbitmap);
sdb.filename = fn;
}
}
.
package com.tecmark;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Environment;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
public class ShowDistortedBitmap extends View{
private static final String TAG = "*********ShowDistortedBitmap";
private File tempFile;
private byte[] imageArray;
private Bitmap finalBitmap;
protected String filename;
public ShowDistortedBitmap(Context context, AttributeSet attrs) {
super(context, attrs);
tempFile = new File(Environment.getExternalStorageDirectory().
getAbsolutePath() + "/"+filename);
Log.e(TAG, "filename ====== "+filename);
imageArray = new byte[(int)tempFile.length()];
try{
InputStream is = new FileInputStream(tempFile);
BufferedInputStream bis = new BufferedInputStream(is);
DataInputStream dis = new DataInputStream(bis);
int i = 0;
while (dis.available() > 0 ) {
imageArray[i] = dis.readByte();
i++;
}
dis.close();
} catch (Exception e) {
e.printStackTrace();
}
finalBitmap = BitmapFactory.decodeByteArray(imageArray, 0, imageArray.length);
if(finalBitmap == null){
Log.e(TAG, "finalbitmap = null");
}else{
Log.e(TAG, "finalbitmap = not null");
}
}
@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);
Log.e(TAG, "******about to draw finalBitmap ");
canvas.drawBitmap(finalBitmap, 0, 0, null);
}
}