0
갤러리에서 이미지를 가져 와서 imageView의 초기 이미지를 바꾸고 싶습니다. 갤러리에서 이미지를 선택하더라도 변경되지 않습니다.조각을 사용하여 갤러리에서 이미지를 가져올 수 없습니다.
중단 점을 사용하여 어딘가까지 정상적으로 작동하는지 조사했습니다. onActivityResult의 try-catch의 다음 코드 부분이 원인 인 것 같습니다.
InputStream in = getActivity().getContentResolver().openInputStream(data.getData());
이미지의 원인은 무엇입니까?
public class Fragment1 extends Fragment {
private static final int REQUEST_GALLERY = 0;
private int viewWidth, viewHeight;
private ImageView imageView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceBundle){
final View view = inflater.inflate(R.layout.fragment_person_create, container, false);
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.image);
imageView = (ImageView) view.findViewById(R.id.image_id);
imageView.setImageBitmap(bmp);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// To Gallery
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, REQUEST_GALLERY);
}
});
Button btn = (Button)view.findViewById(R.id.bt_saveperson);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EditText name = (EditText)view.findViewById(R.id.et_name);
/* save data */
}
}
return view;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_GALLERY && resultCode == Activity.RESULT_OK) {
try {
InputStream in = getActivity().getContentResolver().openInputStream(data.getData());
Bitmap bitmap = BitmapFactory.decodeStream(in);
in.close();
imageView.setImageBitmap(bitmap);
} catch (Exception e) {
}
}
}
}
업데이트
public String getAbsolutePath(Uri uri) {
Log.v("tag", "666");
if(Build.VERSION.SDK_INT >= 19){
Log.v("tag", "777");
String id = uri.getLastPathSegment().split(":")[1];
Log.v("tag", "888");
final String[] imageColumns = {MediaStore.Images.Media.DATA };
final String imageOrderBy = null;
Uri tempUri = getUri();
Cursor imageCursor = getActivity().getContentResolver().query(tempUri, imageColumns,MediaStore.Images.Media._ID + "="+id, null, imageOrderBy);
if (imageCursor.moveToFirst()) {
return imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
}else{
return null;
}
}else{
String[] projection = { MediaColumns.DATA };
Cursor cursor = getActivity().getContentResolver().query(uri, projection, null, null, null);
if (cursor != null) {
int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} else
return null;
}
}
}
private Uri getUri() {
String state = Environment.getExternalStorageState();
if(!state.equalsIgnoreCase(Environment.MEDIA_MOUNTED))
return MediaStore.Images.Media.INTERNAL_CONTENT_URI;
return MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
}
로그 캣은
11-20 05:41:20.295: V/tag(1647) : 666
11-20 05:41:20.295: V/tag(1647) : 777
11-20 05:41:20.325: W/EGL_emulation(1647) : eglSurfaceAttrib not implemented
11-20 05:41:20.575: W/MediaFocusControl(1272): RemoteControlClient died
11-20 05:41:20.575: I/ActivityManager(1272) : Killing 1498:com.android.music/u0a32 (adj 15): empty #17
11-20 05:41:20.935: I/ActivityManager(1272) : Killing 1437:com.android.printspooler/u0a39 (adj 15): empty #17
11-20 05:41:20.975: D/(935): HostConnection: :get() New Host Connection established 0xb7e00a40, tid 1896
방법 getUri을 (정의되지 않습니다. 어떻게해야합니까? –
메소드 getUri()를 추가하십시오. http://stackoverflow.com/questions/25262463/upload-the-picture-from-gallery-or-camera-by-alertdialogue/25262671#25262671 –
작동하지 않습니다. 어떻게해야합니까? –