0

我有一个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; 


    } 
} 
+0

其中您在片段类或主要活动中实现了onactivityresult? – Pavan

+0

我尝试在片段类中执行,并进入活动,迄今为止没有工作。 –

回答

0

确保你您的活动中没有onActivityResult。

+0

我做了,评论它,但它没有什么区别。我仍然没有得到激活的onActivityResult方法:( –

+0

尝试添加getActivity()。之前startActivityForResult – vguzzi

0

在您的活动中添加onActivityResult,然后获取片段并调用片段onActivityResult。例如:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container); 
    fragment.onActivityResult(requestCode, resultCode, data); 
}