2017-10-07 21 views
0

這是MainActivity.java。應用程序包含一個使用ImageView和Button的活動。當點擊這些按鈕時,畫廊必須打開。之後你會檢查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

當Activity關閉時,它被銷燬。您應該將數據保存在某個地方然後進行恢復。例如在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(); 
       } 
     } 
    }} 
相關問題