我有一种从图库中检索图像的方法,对我来说效果非常好。我的问题是,我在三个不同的活动中使用它,觉得我应该创建一个可以调用来获取图像的类。
这是我的代码:
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也无法使其工作。似乎我需要把它变成一个活动,如果是这样的话,我看不出将它分开的重点。我错过了一些可以让我把它放在自己的类中并返回图像的东西吗?
谢谢!
答案 0 :(得分:1)
您正在使用来自Activity的onActivityResult方法。也许有一个类方法来执行onActivityResult中的代码。将您的类更改为包含两个单独的方法,因为如果您的单独类包含onActivity,除非它是一项活动,否则它将无法工作。
http://developer.android.com/reference/android/app/Activity.html