2017-03-13 2 views
1

프로필 사진을 이전에 찍을 수있는 그림으로 설정하려고합니다. 이것은 단편에서 일어납니다. 내 코드까지 지금까지입니다 :안드로이드 스튜디오 조각 조각의 그림이 작동하지 않습니다.

public class ProfileFragment extends Fragment { 

CircleImageView profilepicture; 

private static final int CAM_REQUEST = 1313; 
public ProfileFragment() { 
    // Required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_profile, container, false); 

    profilepicture = (CircleImageView) view.findViewById(R.id.profilepicture); 
    return view; 
} 

public void profilepictureOnClick(){ 
    takeNewProfilePicture(); 
} 

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

    if(resultCode == Activity.RESULT_OK) { 
     if(requestCode == CAM_REQUEST){ 
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      profilepicture.setImageBitmap(thumbnail); 
     } 
    } 
} 

private void takeNewProfilePicture(){ 
    Intent cameraintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(cameraintent, CAM_REQUEST); 
} 

} 

내가 그런이를 실행하면 앱이 내가 그림, "첫 번째"조각이 아닌 Profilefragment을 접수 한 후, 보여주고 나는 profilefragment로 돌아갈 때 프로필 사진은 변경되지 않았습니다. 나는 이미 중단 점을 설정하고 디버그 모드로 진행했습니다. 프로그램 중단 점에서 멈추지 만 "건너 뛰기"를 클릭하면 다시로드되는 것처럼 보이지만 여전히 같은 중단 점에 있습니다 ...

모든 아이디어?

답변

0

다음 코드를 사용하여 다음과 같이) (onActivityResult를 오버라이드 (override), 부모 활동에서

private void takeNewProfilePicture(){ 
    Fragment profileFrag = this; 
    Intent cameraintent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    profileFrag.startActivityForResult(cameraintent, CAM_REQUEST); 
} 

을 :

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

을 여기에 무슨 일이 실제로 일어나고있다 :)하여 onActivityResult (활동에 의해 처리됩니다 . 이전 코드에서 startActivityForResult()를 호출했을 때 Activity가 이전 조각에서 요청을 얻고 있다고 생각했습니다. 따라서 startActivityForResult가 호출하는 부분을 지정해야합니다. 그것은 위의 코드에서 수행 된 것입니다.

희망이 도움이됩니다.

+0

안녕하세요, @ tahsinRupam, 도와 주려고 고맙습니다. 귀하의 코드를 사용했지만 결과는 정확히 동일합니다 – HansKrywaa

+0

profilepictureOnClick() 메서드가 호출 된 곳입니다. 활동 클래스를 제공 할 수 있습니다. – tahsinRupam

+0

업데이트 된 답변을 확인하십시오. – tahsinRupam

관련 문제