2014-11-27 5 views
0

내 앨범에서 이미지를 가져 오려고했습니다 ... 아래 코드는 액티비티에서 완벽하게 작동하지만 조각에서 사용할 때 충돌이 발생하지 않습니다. ...은 "onActivityResult를"방법에 도달하지 않은 사람이 코드를이미지를 액티비티로 조각 내기

학부모 활동 보시기 바랍니다

@Override 
public void onClick(View v) { 
    if (v.getId() == mCIB.getId()) { 
     Intent i = new Intent(
       Intent.ACTION_PICK, 
       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(Intent.createChooser(i, ""), RESULT_LOAD_IMAGE); 
    } 

} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == RESULT_LOAD_IMAGE && data != null) { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = {MediaStore.Images.Media.DATA}; 

     Cursor cursor = getActivity().getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     //BitmapFactory.decodeFile(picturePath) 
     mCIB.setBitmapDrawable((BitmapDrawable) BitmapDrawable.createFromPath(picturePath), picturePath); 
     try { 
      mCIB.createImagePath(); 
      mCIB.addImageToDB(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

도움 : [조각에서 호출되지 onActivityResult를이 질문을보고 [1] [1 ] : http://stackoverflow.com/questions/6147884/onactivityresult-not-being-called-in-fragment – ZhangLei

+0

죄송하지만 아무것도 작동하지 않습니다 ... 제가 잘못 생각하고 있다고 생각합니다 – MohammedAlSafwan

+0

여기에 logcat 게시하기 –

답변

1

세드릭에 제안을 줄 수 : SampleActivity.java

public class SampleActivity extends FragmentActivity { 

    FragmentManager fragmentManager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.parent_layout); 
     fragmentManager = getSupportFragmentManager(); 
     if (savedInstanceState == null) { 
      fragmentManager.beginTransaction().add(R.id.container, 
          new SampleFragment(),"sample_fragment").commit(); 
     } 

} 

아빠를 임대 레이아웃 : parent.xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:ignore="MergeRootFrame" /> 

아동 조각 : SampleFragment.java

어쩌면
public class SampleFragment extends Fragment { 

     int reqCode = 111; 
     ImageView image; 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.activity_sample, null); 
      image = (ImageView) rootView.findViewById(R.id.image); 

      image.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        if (v.getId() == image.getId()) { 
        Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, 
          android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
        //photoPickerIntent.setType("image/*"); 
        startActivityForResult(Intent.createChooser(photoPickerIntent, ""), reqCode); 

       } 

       } 
      }); 
      return rootView; 
     } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, 
      Intent imageReturnedIntent) { 
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 
     if (null != imageReturnedIntent && requestCode == 111) { 
      //String strUriPatPic = imageReturnedIntent.getData().toString(); 
      Uri selectedImage = imageReturnedIntent.getData(); 
      onPictureSelected(selectedImage); 
     } 
    } 

    private void onPictureSelected(Uri uri) { 
     Bitmap userPictureBitmap = decodeSampledBitmapFromUri(getActivity(), 
       uri, 100, 100); 
     image.setImageBitmap(userPictureBitmap); 
    } 

    private Bitmap decodeSampledBitmapFromUri(Activity callingActivity, 
      Uri uri, int reqWidth, int reqHeight){ 
    // TODO decode as you want 
    } 
} 
관련 문제