질문을 두서있게 적어야 답변이 달립니다... 취미든 직업이든 프로그래머는 언젠간 질문을 해야하고, 답변 달아줄 사람이 쉽게 알아볼 수 있어야 빠르고 정확하게 답변이 달립니다. 그리고 질문 수정 기능이 있으니 원래 질문을 놔두고 굳이 새 질문을 올릴 필요까진 없습니다.
먼저 A 액티비티는 선택된 이미지 하나를 표시하고, B는 GridView가 있고, 여러 이미지 중에 하나를 선택하는 걸로 이해했습니다.
ok 버튼은 어디에 달려있고, 어디서 호출하며, 어떤 동작을 하는지는 모르겠지만, preference를 사용한다는 건 앱이 완전히 종료됐다가 다시 켜졌을 때 전에 사용한 걸 다시 불러오는 용도로 쓰이니 B액티비티에서 마지막으로 선택한 이미지를 A액티비티에 표시하고 싶다는 걸로 생각하겠습니다.
sPreferences = getSharedPreferences("img001" , MODE_PRIVATE);
지금은 img001 이라고 적고있지만, 사실 이건 앱의 모든 부분에서 사용할 것이므로 보통은 img001이 아닌 kr.susemi99.mytestapp이나 pref 같은 문자열로 많이 적습니다.
저는 보통
sPreferences = PreferenceManager.getDefaultSharedPreferences(context);
로 사용합니다.
editor = sPreferences.edit();
editor.putInt("img002", a);
editor.apply();
이건 prefrece 안에 img002 라는 항목에 a를 저장해둔다는 뜻입니다.
a 가 어떤 값인지 Log를 찍어보시고,
sPreferences.getInt("img002", -1)
이것도 Log를 찍어보세요.
-1이면 저장이 안된 거고, 대여섯 자리의 숫자가 나온다면 잘 저장된 겁니다.
저장이 잘 됐다면 이제는 불러와서 표시만 하면 됩니다.
지난 번 질문에서 제가 getInt()를 어디서 하냐고 물었을 때 자꾸 다른 말씀을 하는 걸 보니 아마 안하고 있었을 겁니다.
img1 = (ImageView) findViewById(R.id.picture_profile);
int resId = sPreferences.getInt("img002", -1);
if (resId != -1) {
img1.setImageResource(resId);
}
else {
img1.setImageResource(drawable.profile0001_n);
}
정확히 어떤 걸 원하는 지는 모르겠지만, 이런 식으로 하면 될 겁니다.
어떤 걸 보면서 공부하시는 지는 모르겠지만, 강좌용으로 나온 거라면 분명 비슷한 코드가 거기에 있을 겁니다. 마음이 급하거나 잘 안된다고 자책하지 말고 차근차근 진행하세요.