как передать имя файла через намерение, которое будет использоваться в представлении этого действия - PullRequest
0 голосов
/ 24 сентября 2011

У меня есть список имен файлов в списке. когда пользователь нажимает на имя файла, это изображение должно быть загружено. Я передаю имя файла через намерение, этот бит работает нормально. получающая деятельность может получить имя файла. это действие имеет собственное представление, и в этом проблема. Пользовательское представление должно быть в состоянии передать правильное имя файла, полученное в его деятельности от 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);

     }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...