2017-11-08 6 views
0

나는 세 개의 탭이있는 FragmentPagerAdapter을 사용하고 있습니다. 각 탭에 여러 개의 fragments이 있습니다. 조각 중 하나에 갤러리 나 카메라에서 사진을 가져 오기를 요청합니다. 부모가 의 onActivityResult()이라는 문제는 Fragment이 아닌 탭을 호스팅하는 문제입니다. 감사합니다. 여기안드로이드는 조각을 사용하여 카메라 또는 갤러리에서 사진을 가져옵니다

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     case MEDIA_TYPE_IMAGE_FROM_GALLERY: 
      if (resultCode == RESULT_OK) { 
       Uri selectedImage = data.getData(); 
       String realPath = getImageRealPath(selectedImage); 
       realPaths.add(realPath); 
       Glide.with(mActivity) 
         .load(realPath) 
         .into(profile_imv); 
      } 
      break; 
     case MEDIA_TYPE_IMAGE_BY_CAMERA: 
      if (resultCode == RESULT_OK) { 
       Uri selectedImage = data.getData(); 
       String realPath = getImageRealPath(selectedImage); 
       realPaths.add(realPath); 
       Glide.with(mActivity) 
         .load(realPath) 
         .into(profile_imv); 
      } 
      break; 
    } 
} 

내가 모두 갤러리와 카메라의 의도를 호출하는 방법을

public void choosePhotoFromGallary() { 
    Intent galleryIntent = new Intent(Intent.ACTION_PICK, 
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 

    startActivityForResult(galleryIntent, MEDIA_TYPE_IMAGE_FROM_GALLERY); 
} 

private void takePhotoFromCamera() { 
    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    if (intent.resolveActivity(mActivity.getPackageManager()) != null) { 
     startActivityForResult(intent, MEDIA_TYPE_IMAGE_BY_CAMERA); 
    } 
} 

이 인 MainACtivityonActivityResult() 코드

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Fragment fragment = getSupportFragmentManager().findFragmentByTag("USER_DETAILS"); 
    if (fragment != null) { 
     fragment.onActivityResult(requestCode, resultCode, data); 
    } 
} 
+0

갤러리에 게시하기 intent code – gStephin

답변

0

startActivityForResult(..)로 변경 getActivity().startActivityForResult(..)이에 대한 결과 의도를 전달할 것이다 그 단편은 onActivityResult(..)

아름답게이 게시물에 설명 된 here

+0

나는 이미 제안 된 방식대로 해냈다. 아직 행운이 없다. – Sultan

0

조각 안의 onActiviyResult()를 재정의하고 거기에 코드를 다시 작성하십시오.

+0

나는 아무 일도 일어나지 않았다. – Sultan

+0

은 활동 및 단편의 전체 코드를 보냅니다. –