So speichern Sie Bilder in ImageView mithilfe der gemeinsamen Einstellungen

Ich habe eine Aktivität, die eine andere Aktivität öffnet, um ein Download-Bild zu erhalten. Das Bild kehrt zu meiner ursprünglichen Aktivität zurück und ruht sich in einer Bildansicht aus. Das funktioniert gut. Wie speichere ich das Bild, damit es noch vorhanden ist, wenn der Benutzer später zurückkehrt oder die App beendet. Ich weiß, dass ich die gemeinsamen Einstellungen verwenden soll, um den Bildpfad abzurufen und das Bild selbst nicht zu speichern, aber ich weiß einfach nicht, wie das geht.

Hauptaktivitä

public class MainActivity extends Activity {

  private static final int REQUEST_CODE = 1;
  private Bitmap bitmap;
  Button button;
  ImageView imageView;
  String selectedImagePath;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button=(Button) findViewById(R.id.click);
    imageView=(ImageView) findViewById(R.id.image);
    imageView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            Switch();
            return true;
        }
    });
  }

  public void Switch(){
    imageView = (ImageView) findViewById(R.id.image);
    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, REQUEST_CODE);
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode==REQUEST_CODE&&resultCode== Activity.RESULT_OK){
      try {
        Uri selectedImage = data.getData();
        String[] filePathColumn = {MediaStore.Images.Media.DATA};
        Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String filePath = cursor.getString(columnIndex);
        Log.v("roni", filePath);
        cursor.close();
        if(bitmap != null && !bitmap.isRecycled())
          {
            bitmap = null;
          }
        bitmap = BitmapFactory.decodeFile(filePath);
        //imageView.setBackgroundResource(0);
        imageView.setImageBitmap(bitmap);
        } catch (Exception e){
          e.printStackTrace();
        }
      }
  }

  @Override
  protected void onPause() {
    super.onPause();
     save();
  }

  public void save() {
    SharedPreferences sp = getSharedPreferences("AppSharedPref", 1); // Open SharedPreferences with name AppSharedPref
    SharedPreferences.Editor editor = sp.edit();
    editor.putString("ImagePath", selectedImagePath); // Store selectedImagePath with key "ImagePath". This key will be then used to retrieve data.
    editor.commit();
  }

  @Override
  protected void onResume() {
    super.onResume();
    restore();
  }

  public void restore(){
    SharedPreferences sp = getSharedPreferences("AppSharedPref", 1);
    selectedImagePath = sp.getString("ImagePath", "");
    bitmap = BitmapFactory.decodeFile(selectedImagePath);
    imageView.setImageBitmap(bitmap);
  }
}

ViewActivity

public class ViewActivity extends ActionBarActivity {
ImageButton imageViews;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view);
    imageViews = (ImageButton) findViewById(R.id.image);
    Intent intent = getIntent();
    Uri data = intent.getData();
    if (intent.getType().indexOf("image/") != -1)
    {
        imageViews.setImageURI(data);
    }
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage