0

이상한 문제가 있습니다. > ServiceDetails - -> 난 갤러리에서 이미지를 선택합니다 마지막 조각 (업로드 조각)에startActivityForResult에서 돌아온 후 조각이 사라집니다.

업로드> 서비스 -

난 내 코드 (4 레벨)

홈에서 중첩 된 조각을 사용하여 또는 카메라 그래서 나는 이미지를 선택하려면 다음 코드를 작성 :

switch (which) { 
    case galleryItem: 
     Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(
       Intent.createChooser(intent, “Select Album”, 
       Home.GALLERY_REQUEST); 
     break; 

    case cameraItem: 
     Intent cameraIntent = new Intent(
       android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(cameraIntent, 
       Home.CAMERA_REQUEST); 
     break; 

그리고 모든 것은 괜찮습니다.

내가 그 내 앨범 스크롤 (모든 썸네일 참조) 여는 경우, 선택한 후

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 

    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == Activity.RESULT_OK) { 
     if (requestCode == Home.GALLERY_REQUEST) { 
      Uri selectedImageUri = data.getData(); 

     } else if (requestCode == Home.CAMERA_REQUEST) { 
      Bitmap photo = (Bitmap) data.getExtras().get("data"); 
      Uri cameraUri = getImageUri(
        getActivity().getApplicationContext(), photo); 

     } 
    } 
} 

문제 : 다음 코드 내 조각의 onActivityResult에서 선택한 사진에서 URI를 얻을 수 있습니다 내 그림 onActivityResult이 조각에서 호출되었지만 조각이 더 이상 보이지 않고 Home 조각 (첫 번째 조각)이 내 응용 프로그램에서 볼 수 있어야합니다. 하지만 (startActivityForResult로) 앨범을 열고 즉시 사진을 선택하면 모든 것이 정상적으로 진행됩니다.

카메라에는 아무런 문제가 없습니다.

내 코드의 일부분을보고 싶다면 도움이되는 데이터 인 을 찾았습니다. 나는 마지막 충돌을 잃어 버리지 만 충돌이 없습니다. 사전에 감사합니다. 단편에서

답변

1

:

Intent intent = new Intent(Intent.ACTION_PICK, 
         android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(intent, Home.GALLERY_REQUEST); 

이유는 모르겠지만 어느 누구도 Intent.createChooser에 의해 시작 의도가 다르다는 것을 알고 있고 일반적으로 전화를 걸면

+0

내가 직면 한 동일한 문제, Intent.createChooser는 다중 의도 호출 및 병합을 할 때 사용합니다. – Piyush

0

명시 적 호출은 상위 활동 클래스

을 다음과 같이 기능을하여 onActivityResult하여 onActivityResult() 메소드를 재정의 심지어 조각 클래스이를 무시하고 다음 코드로 호출한다. 하위 클래스에서

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

: 부모 클래스에서

내 문제에

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(
     Intent.createChooser(intent, “Select Album”, 
     Home.GALLERY_REQUEST); 

변경하여 해결 된

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //in fragment class callback 
    } 
+0

답장을 보내 주셔서 감사합니다. 그러나 답변을 드리려고해도 문제가되지 않습니다. onActivityResult' 데이터, –

+0

중첩 된 조각에 대한 일반적인 문제입니다. 그래서 조각 클래스를 관리하거나 자식 클래스에서 원하는 조각을 보여줄 수 있습니다. 물론 이것은 해킹이지만 지금 당장 트릭을해야합니다. 그 외에는 같은 종류의 코드를 넣으려고하므로 일단 actuall 솔루션을 찾으면 업데이트 할 것입니다. –

+0

나는 당신을 얻지 못한다. 나는 모든 자식 조각을 코드로 열어야한다는 뜻인가? onResume에서와 같이 하나의 부울 값을 확인하고 원하는 단편을여십시오. –