Мой класс IntentHelper
public class IntentHelper {
private Activity activity;
// Camera activity request code
public static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
//Gallery activity request code
public static final int GALLERY_OPEN_IMAGE_REQUEST_CODE = 101;
public IntentHelper(Activity activity){
this.activity = activity;
}
/**
* Launching gallery to get image
*/
public void getGalleryImage(){
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("outputFormat",
Bitmap.CompressFormat.JPEG.toString());
activity.startActivityForResult(Intent.createChooser(intent, "Select Image"),GALLERY_OPEN_IMAGE_REQUEST_CODE);
}
}
Я называю этот класс из фрагмента как:
IntentHelper intentHelper = new IntentHelper(getActivity());
intentHelper.getGalleryImage();
Моя цель галереи успешно открыта с этой логикой.
Но:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// following if condition is not executing
if(requestCode == IntentHelper.GALLERY_OPEN_IMAGE_REQUEST_CODE)
{
if(resultCode == RESULT_OK){
SnackbarHelper.showSnackBar("Image browsed sucessfully",getView());
Toast.makeText(getContext(), "Image browsed successfully", Toast.LENGTH_SHORT).show();
}
else if(requestCode == RESULT_CANCELED){
SnackbarHelper.showSnackBar("Image browsed cancelled",getView());
}
}
}
Я не знаю, почему это происходит.
Мое намерение вызывается идеально и возвращает меня к той же активности, тогда почему это условие onActivityResult () не работает ???
Мой весь код в фрагменте. Но я не думаю, что это вызывает эту проблему
РЕДАКТИРОВАТЬ - РЕШЕНИЕ
Поскольку ответ @laalto верен. Я должен начать startActivityForResult () с экземпляром фрагмента.
Поэтому я изменил свой класс IntentHelper следующим образом:
public class IntentHelper {
/*
* Instead of Activity use Fragment
*/
private Fragment fragment;
// Camera activity request code
public static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100;
//Gallery activity request code
public static final int GALLERY_OPEN_IMAGE_REQUEST_CODE = 101;
public IntentHelper(Fragment fragment){
this.fragment = fragment;
}
/**
* Launching gallery to get image
*/
public void getGalleryImage() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("outputFormat",
Bitmap.CompressFormat.JPEG.toString());
// Use fragment for startActivityForResult() to initiate.
fragment.startActivityForResult(Intent.createChooser(intent, "Select Image"),GALLERY_OPEN_IMAGE_REQUEST_CODE);
}
}
IntentHelper инициируется как:
IntentHelper intentHelper = new IntentHelper(this);
intentHelper.getGalleryImage();
После этого все отлично работает !!!!