2017-10-07 16 views
0

이것은 MainActivity.java입니다. 응용 프로그램에는 ImageView 및 Button에 대한 하나의 활동이 포함됩니다. 이 버튼을 누르면 갤러리가 열려 있어야합니다. 그 후에 ImageView에 붙여 넣은 이미지를 확인합니다. 앱을 종료하거나 다시 돌아가고 싶을 때 활동에 이미지를 저장할 수 없습니다.갤러리에서로드 된 활동의 imageView를 저장하지 마시고, 종료하거나 다시 살짝 누르십시오.

import android.content.Intent; 
import android.graphics.Bitmap; 
import android.net.Uri; 
import android.os.Bundle; 
import android.provider.MediaStore; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

import java.io.IOException; 

public class MainActivity extends AppCompatActivity { 

    static final int GALLERY_REQUEST = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.content_main); 

     Button button = (Button)findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
       photoPickerIntent.setType("image/*"); 
       startActivityForResult(photoPickerIntent, GALLERY_REQUEST); 
      } 
     }); 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

     Bitmap bitmap = null; 
     ImageView imageView = (ImageView) findViewById(R.id.imageView); 

     switch(requestCode) { 
      case GALLERY_REQUEST: 
       if(resultCode == RESULT_OK){ 
        Uri selectedImage = imageReturnedIntent.getData(); 
        try { 
         bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImage); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
        imageView.setImageBitmap(bitmap); 
        super.onResume(); 
       } 
     } 
    }} 

그리고 이것은 content_main.xml입니다. 여기 갤러리에서 이미지를 붙여 넣기 위해 버튼과 빈 ImageView를 만들었습니다. 활동에 이미지와 텍스트를 저장하는 방법을 알려주십시오.

답변

0

활동이 닫히면 활동이 종료됩니다. 데이터를 어딘가에 저장 한 다음 복원해야합니다. 예를 들어 SharedPreferences. 가장 간단한 방법은 아래와 같습니다.

public class MainActivity extends AppCompatActivity { 

    static final int GALLERY_REQUEST = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button button = (Button)findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
       photoPickerIntent.setType("image/*"); 
       startActivityForResult(photoPickerIntent, GALLERY_REQUEST); 
      } 
     }); 

     SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
     String uriString = preferences.getString("MainPicture", null); 

     if (uriString != null) { 
      Bitmap bitmap = null; 
      ImageView imageView = (ImageView) findViewById(R.id.imageView); 
      Uri selectedImage = Uri.parse(uriString); 
      try { 
       bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImage); 
       SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
       editor.putString("MainPicture", selectedImage.toString()); 
       editor.apply(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      imageView.setImageBitmap(bitmap); 
     } 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

     Bitmap bitmap = null; 
     ImageView imageView = (ImageView) findViewById(R.id.imageView); 

     switch(requestCode) { 
      case GALLERY_REQUEST: 
       if(resultCode == RESULT_OK){ 
        Uri selectedImage = imageReturnedIntent.getData(); 
        try { 
         bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImage); 
         SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
         editor.putString("MainPicture", selectedImage.toString()); 
         editor.apply(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
        imageView.setImageBitmap(bitmap); 
        super.onResume(); 
       } 
     } 
    }}