마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

imageview를 앱종료후에도 유지하는방법

0 추천
package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.InputStream;

public class PhotoActivity extends AppCompatActivity {
    private static final int REQUEST_CODE = 0;
    private ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = findViewById(R.id.image);

        imageView.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(intent, REQUEST_CODE);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if(requestCode == REQUEST_CODE)
        {
            if(resultCode == RESULT_OK)
            {
                try{
                    InputStream in = getContentResolver().openInputStream(data.getData());

                    Bitmap img = BitmapFactory.decodeStream(in);
                    in.close();

                    imageView.setImageBitmap(img);
                }catch(Exception e)
                {

                }
            }
            else if(resultCode == RESULT_CANCELED)
            {
                Toast.makeText(this, "사진 선택 취소", Toast.LENGTH_LONG).show();
            }
        }
    }
}
 
위와같이 mainactivy를 구성했는데 앱을 종료하면 사진값이 초기화됩니다. 해결방법 아시는분있나요?
부탁드립니다...
 
아래는 xml 코드입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    >

    <ImageView
        android:id="@+id/image"
        android:layout_width="217dp"
        android:layout_height="255dp"
         android:layout_gravity="center"
        app:srcCompat="@mipmap/ic_launcher" />
fldydrud21 (140 포인트) 님이 2020년 5월 21일 질문

1개의 답변

0 추천
이미지를 storage에 저장을 하고, 앱이 시작할때 저장한 이미지가 있으면 그걸 보여주면 되겠네요.
mcsong (44,040 포인트) 님이 2020년 5월 21일 답변
혹시 코드를알고싶은데 검색어를 뭐라야할지...아실까요..? 안드로이드 완전초보라..죄송합니다!
아래 코드에서 data.getData() 가 경로이니, 이 데이터를 sharedpreference에 저장을 하시고요, oncreate에서 sharedpreference에 데이터가 있으면 아래 로직으로 읽어 주면 되겠네요.. 그리고, stream은 finally {} 에서 닫아야 합니다.

InputStream in = getContentResolver().openInputStream(data.getData());
Bitmap img = BitmapFactory.decodeStream(in);
in.close();
imageView.setImageBitmap(img);

그리고, 이 코드는 잠재적으로 outofmemory 에러를 발생시킬 수 있으니, BitmapFactory.Options 을 사용하시면 좋겠습니다.
혹시.. 블루투스연결을해서 거리(riss)또는 블루투스연결이 끊어질시 소리나 진동이 울리게끔 할수있나요?
당연히 할 수 있겠죵.. ^^
혹시 실례지만 코딩 어떻게하는지 아시는지요?
넵.. 알고 있습니다.
죄송한데 아래 코드에서 data.getData() 가 경로이니, 이 데이터를 sharedpreference에 저장을 하시고요, oncreate에서 sharedpreference에 데이터가 있으면 아래 로직으로 읽어 주면 되겠네요.. 그리고, stream은 finally {} 에서 닫아야 합니다.

InputStream in = getContentResolver().openInputStream(data.getData());
Bitmap img = BitmapFactory.decodeStream(in);
in.close();
imageView.setImageBitmap(img);
이게
무슨뜻인지 모르겠습니다 sharedpreferences로 저장하시라고했는데 코드자체를 못찾겠어요 3시간째 제자리걸음입니다. 알려주실수있나요?! 부탁드립니다
혹시 연락가능한 카톡이나 이메일알수있을가요..?! 전공과관련없는일을 하려다보니 시행착오가 너무많아서 도움좀 주실수있으실까해서요.!!]
저도 학부는 행정을 하다가 이걸로 먹고 살고 있네요.. mcsong 쥐 멜로 문의를 주시면 됩니다. 지금까지 질문하시는 것을 보니, 아마도 자바 책 1, 안드로이드 시작 책 1권 정도는 읽어보셔야 제가 말씀드린것에 대한 감이 오실 것 같습니다.
...