2017-10-07 5 views
0

これはMainActivity.javaです。アプリケーションには、ImageViewとボタンで1つのアクティビティが含まれています。これらのボタンをタップすると、ギャラリーが開いている必要があります。その後、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(); 
       } 
     } 
    }} 
関連する問題