我在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>
答案 0 :(得分:0)
这是一个内部阶级吗?因为我在任何地方都没有看到profileImg
的声明。尝试添加:
private ImageView profileImg;
..在班级的最顶端。或者,如果不是这样,那么尝试添加:
intent.putExtra("return-data", true);
..到您的onClick
方法声明。