创建专门用于检索图像的类?

时间:2015-12-04 18:04:29

标签: android android-intent android-activity

我有一种从图库中检索图像的方法,对我来说效果非常好。我的问题是,我在三个不同的活动中使用它,觉得我应该创建一个可以调用来获取图像的类。

这是我的代码:

private void getImage () {
    Intent galleryIntent = new Intent(Intent.ACTION_PICK,
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    // Start the Intent
    startActivityForResult(galleryIntent, RESULT_LOAD_IMG);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    mRLMenuParams.setVisibility(View.GONE);
    mRLImageParams.setVisibility(View.VISIBLE);

    bmSelectedImage = null;

    try {
        // When an Image is picked
        if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK
                && null != data) {
            // Get the Image from data

            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            // Get the cursor
            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            // Move to first row
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            imgDecodableString = cursor.getString(columnIndex);
            cursor.close();
            ImageView imSelectedImage = (ImageView) findViewById(R.id.imageView_image);
            imSelectedImage.setImageBitmap(BitmapFactory.decodeFile(imgDecodableString));
            Bitmap bmImage = Bitmap.createBitmap(BitmapFactory.decodeFile(imgDecodableString));
            bmSelectedImage = bmImage.copy(Bitmap.Config.ARGB_8888, true);
        } else {
            Toast.makeText(this, "You haven't picked Image", Toast.LENGTH_LONG).show();
        }
    } catch (Exception e) {
        Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG).show();
    }
}

当我尝试将它放在自己的类中时,即使传递Context也无法使其工作。似乎我需要把它变成一个活动,如果是这样的话,我看不出将它分开的重点。我错过了一些可以让我把它放在自己的类中并返回图像的东西吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您正在使用来自Activity的onActivityResult方法。也许有一个类方法来执行onActivityResult中的代码。将您的类更改为包含两个单独的方法,因为如果您的单独类包含onActivity,除非它是一项活动,否则它将无法工作。

http://developer.android.com/reference/android/app/Activity.html