카메라 갤러리 사진을 얻기 위해 다른 활동을 여는 활동이 있습니다. 그림이 원래 활동으로 되돌아 와서 imageView에 놓입니다. 괜찮아. 사용자가 나중에 다시 돌아 오거나 이미지가 사라질 때 이미지를 저장하려면 어떻게해야합니까? 공유 환경 설정을 사용하여 이미지 경로를 가져오고 이미지 자체를 저장하지 않겠다는 것을 알고 있지만 어떻게해야할지 모릅니다.공유 환경 설정을 사용하여 이미지 경로를 저장하는 방법
활동
private ImageView im1;
private String selectedImagePath;
private static final int SELECT_PICTURE = 1;
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
System.out.println("Image Path : " + selectedImagePath);
im1.setImageURI(selectedImageUri);
}}}
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
};
((Button)dialogView.findViewById(R.id.button3))
.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
}});
활동 B
Button send = (Button) findViewById(R.id.send);
send.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent=new Intent();
setResult(RESULT_OK, intent);
Bundle bundle=new Bundle();
bundle.putInt("image",R.id.showImg);
intent.putExtras(bundle);
finish();
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
System.out.println("Image Path : " + selectedImagePath);
img.setImageURI(selectedImageUri);
}}}
public String getPath(Uri uri) {
String[] projection = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
이 코드를 구현하려고했지만 잘못된 장소에 넣어야합니다. OnPause가 발생하지 않고 OnResume 섹션이 onActivityResult 섹션 바로 다음으로 이동합니까? – SmulianJulian
실제로이 위치에 상관없이 'Activity' 내부에 있어야합니다. 예,'onActivityResult()'뒤에 올 수 있습니다. 그게 뭐가 잘못 됐니? –
내가 올바른 방법을 알기 때문에이 질문에 답을 표시했습니다. 나는 네가 나에게 준 것을 사용하여 또 다른 질문을 올렸다. 아직도 저장할 수 없습니다. 어쩌면 도움을 줄 수 있습니다. http://stackoverflow.com/questions/17358820/how-to-save-multiple-images-to-imageview-using-shared-preferences – SmulianJulian