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

sharedPreference로 이미지 저장하는 법이 궁금합니다

0 추천

텍스트뷰, seekbar는 성공했는데 이미지를 저장을 못해서요

imageView.setImageResource(on());

on 메소드가

이미지뷰가 if에 따라서 바뀌는 메소드인데요

private int on() {
    String text1 = textView.getText().toString();

    int num1 = Integer.parseInt(text1);


    textView.setText(Integer.toString(num1));


    if (num1 <= 30) {

        imageView.setImageResource(R.drawable.battery1);
    } else if (num1 <= 50) {

        imageView.setImageResource(R.drawable.battery2);
    } else if (num1 <= 80) {

        imageView.setImageResource(R.drawable.battery3);
    } else if (num1 <= 90) {

        imageView.setImageResource(R.drawable.battery4);
    }
    return num1;
}

이렇게 이미지 착착착 넝어가는걸 어플 종료 했다가 켜도 유지가 됬으면 좋겠거든요

 

protected void onStop() {

    super.onStop();


    // Activity가 종료되기 전에 저장한다.

    //SharedPreferences sFile이름, 기본모드로 설정

    SharedPreferences sharedPreferences = getSharedPreferences("sFile", MODE_PRIVATE);


    //저장을 하기위해 editor를 이용하여 값을 저장시켜준다.

    SharedPreferences.Editor editor = sharedPreferences.edit();
String view = imageView.getContext().toString();
editor.putString("view", view);

 

코드 상 오류는 없는데 어플이 종료 되어버려요...

어떻게하면 좋을가요 ㅠㅠ

아연 (120 포인트) 님이 2019년 10월 19일 질문

2개의 답변

0 추천
종료가 됐으면 로그가 남았을 겁니다. 그 로그를 보면 답이 있습니다.

게다가 지금은 이미지 저장이 아니라 이미지뷰의 context만 저장하네요.
쎄미 (162,410 포인트) 님이 2019년 10월 21일 답변
0 추천
private int mNum1; //멤버 변수로 선언.

private void on(ImageView imageView) { //반환값 불필요.
    String text1 = textView.getText().toString()

    mNum1 = Integer.parseInt(text1);
    

    //textView.setText(Integer.toString(num1)); //불필요한 코드입니다.

    if (mNum1 <= 30) {

        imageView.setImageResource(R.drawable.battery1);
    } else if (mNum1 <= 50) {

        imageView.setImageResource(R.drawable.battery2);
    } else if (mNum1 <= 80) {

        imageView.setImageResource(R.drawable.battery3);
    } else if (mNum1 <= 90) {

        imageView.setImageResource(R.drawable.battery4);
    }
    //return num1; //반환값 불필요.
}

 

protected void onStop() {

    super.onStop()

    SharedPreferences sharedPreferences = getSharedPreferences("sFile", MODE_PRIVATE);

    SharedPreferences.Editor editor = sharedPreferences.edit();

    editor.putInt("num1", mNum1);

    editor.apply();

}

 

protected void onStart() {

    super.onStart()

    SharedPreferences sharedPreferences = getSharedPreferences("sFile", MODE_PRIVATE);

    mNum1 =  sharedPreferences.getInt("num1", 0);

    ImageView imageView = findViewById(R.id.imageView);

    on(imageView);

}

 

imageView의 컨텍스트는 참조값이고 앱 실행시마다 달라지고 저장하는 게 무의미합니다.

컨텍스트를 로드하더라도 그 안의 이미지가 저장된 상태로 로딩하는 것도 아니고요.
franny (1,760 포인트) 님이 2019년 10월 21일 답변
franny님이 2019년 10월 21일 수정
...