在android中的imageview中显示图像

时间:2014-09-21 05:07:18

标签: android android-imageview

我在ImageView布局上设置onClickListener并尝试显示手机中的图像。我到处寻找过程,大多数都是相似的。所以它应该工作但图像不在imageview中显示。也许我没有以正确的方式处理,因为一切都在片段中发生。在片段我的代码显示图像。我需要建议才能克服。

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>

1 个答案:

答案 0 :(得分:0)

这是一个内部阶级吗?因为我在任何地方都没有看到profileImg的声明。尝试添加:

private ImageView profileImg;

..在班级的最顶端。或者,如果不是这样,那么尝试添加:

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

..到您的onClick方法声明。