2014-09-21 6 views
0

Я установил onClickListener на макет ImageView и попытался отобразить изображение с телефона. Всюду я искал процесс, и большинство из них схожи. Поэтому он должен работать, но изображение не отображается в представлении изображения. Возможно, я не работаю правильно, так как все происходит в фрагменте. В фрагменте моего кода для отображения изображения. Мне нужно предложение преодолеть.Показать изображение в представлении изображения в android

public class UserProfile extends Fragment { 

    private ImageView profileImg; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_user_profile, container, false); 
     profileImg = (ImageView) v.findViewById(R.id.imageView_profile); 
     profileImg.setOnClickListener(chngImgHandler); 
     return v; 
    } 

    OnClickListener chngImgHandler = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      startActivityForResult(Intent.createChooser(intent, "Complete action using"), 1); 
     } 
    }; 

    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == 1 && resultCode == getActivity().RESULT_OK) { 
      // Bitmap photo = (Bitmap) data.getData().getPath(); 
      Uri selectedImageUri = data.getData(); 
      imagepath = getPath(selectedImageUri); 
      Bitmap bitmap = BitmapFactory.decodeFile(imagepath); 
      profileImg.setImageBitmap(bitmap); 
     } 

    } 

    public String getPath(Uri uri) { 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     @SuppressWarnings("deprecation") 
     Cursor cursor = getActivity().managedQuery(uri, projection, null, null, null); 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } 

Макет профиля пользователя

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="200dp" 
    android:background="@color/profilepicBG" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/imageView_profile" 
     android:layout_width="120dp" 
     android:layout_height="100dp" 
     android:layout_gravity="center" 
     android:layout_marginTop="25dp" 
     android:src="@drawable/ic_launcher" /> 

    <Button 
     android:id="@+id/btnChangePicture" 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:layout_gravity="center" 
     android:layout_marginTop="15dp" 
     android:text="You?" 
     android:textColor="#fff" 
     android:textSize="12sp" /> 
</LinearLayout> 
+0

Вы внедряете 'onActivityResult' в' FragmentActivity'? – SilentKiller

+0

да, я так думаю, и, пожалуйста, см. Мой код –

+0

ваша родительская активность onActivityResult будет вызвана, поэтому вам нужно поместить код, присутствующий в onActivityResult фрагмента там .... – maaz

ответ

0

Это внутренний класс? Потому что я не вижу вашего объявления для profileImg в любом месте. Попробуйте добавить:

private ImageView profileImg; 

... на самом верху класса. Или, если это не так, то попробуйте добавить:

intent.putExtra("return-data", true); 

..разработать вашей декларации onClick метода.

+0

Я сделал это. Просто забыли скопировать сюда. –

+0

ничего не происходит и что это на самом деле? –

+0

Я столкнулся с подобной проблемой, и эта строка исправила ее для меня. Anyhoo, вы пытались использовать 'profileImg.setImageUri (selectedImageUri)' непосредственно внутри 'onActivityResult'? – ridsatrio