2014-11-27 4 views
0

Я пытался получить изображение из своего альбома ... этот код ниже, отлично работает на Activity, но когда я использую его из фрагмента ... он не разбивается, он просто не доходит до метода «onActivityResult» ... может кто-нибудь дать предложение, чтобы что происходитВыбор изображения из Activity to Fragment

@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 называют в Fragment] [1] [1 ]: http://stackoverflow.com/questions/6147884/onactivityresult-not-being-called-in-fragment – ZhangLei

+0

Извините, но ничего не работает ... Я думаю, что я делаю что-то неправильно – MohammedAlSafwan

+0

опубликуйте свой логарифм здесь –

ответ

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 
    } 
} 
Смежные вопросы