我有一個DialogFragment彈出來要求用戶選擇選擇拍照,或從圖庫中選擇一個。當我打開圖庫並選擇圖像時,沒有任何反應,OnActivityResult不響應。是否因爲DialogFragment類在圖像被選中後不久就關閉了,並且沒有時間通過OnActivityResult類?OnActivityResult不響應DialogFragment
這裏是onCreateDialog爲DialogFragment類:
public class PhotoFragment extends DialogFragment {
public static final int SELECT_PHOTO = 100;
public Bitmap image;
public static interface OnCompleteListener {
public abstract void onComplete(Bitmap image);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setItems(new CharSequence[]
{"Take a Photo", "Select Image From Gallery"},
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
switch (which) {
case 0:
Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePicture, 0);//zero can be replaced with any action code
break;
case 1:
doToast("Picking Image",true);
Intent pickPhoto = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(pickPhoto , SELECT_PHOTO);//one can be replaced with any action code
break;
}
}
});
return builder.create();
}
下面是activityOnResult()的代碼(位於同一個班級,PhotoFragment.java)
@Override
public void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
onActivityResult(requestCode, resultCode, imageReturnedIntent);
doToast("Activity Result", true);
switch (requestCode) {
case SELECT_PHOTO:
Uri selectedImage = imageReturnedIntent.getData();
InputStream imageStream = null;
try {
imageStream = getContext().getContentResolver().openInputStream(imageReturnedIntent.getData());
} catch (FileNotFoundException e) {
doToast("Input Stream not found", true);
e.printStackTrace();
}
Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
image = yourSelectedImage;
}
}
其中您在片段類或主要活動中實現了onactivityresult? – Pavan
我嘗試在片段類中執行,並進入活動,迄今爲止沒有工作。 –