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

SharedPreferences 질문입니다 !

0 추천

안녕하세요 SharedPreferences에 대해 질문을 드리려 합니다..

제가 인텐트를 하면서 인텐트 되어진 값들도 인텐트 되어진 화면에 저장이 되게끔 하게 하고 싶은데

SharedPreferences<< 를 사용하면 저장을 할 수 있나요??

익명사용자 님이 2016년 10월 10일 질문

1개의 답변

0 추천
질문 자체가 명확하지 않습니다.

인텐트를 사용해서 값과 함께 액티비티를 호출하고, 호출한  액티비티에서 그 값들을 저장을 하고싶다는 건가요?

그렇다면 SharedPreferences를 쓰려고 하는 이유가 무엇인가요?

SharedPreferences가 어떨때 쓰는지 이게 나에게 적합한지 유무를 먼저 따져 보시는게 좋을것 같네요.

단순히 값을 넘겨 받고 저장하는것은 액티비티에서만 유지한다면 그냥 변수에 값을 넣으면 되는것인데요,

SharedPreferences를 사용을 하면 앱을 삭제하기 전까지 유효하며,

저장한 값들을 key, value 형태로 저장하고 내가 이 값들을 앱을 껏다켜도 계속 유지해야 한다면 SharedPreferences를 쓰는것이구요, 일회성이라면 SharedPreferences를 쓰실 필요가 없습니다.
캬옹이 (37,920 포인트) 님이 2016년 10월 11일 답변
네네 호출한 액티비티에 그 값들을 저장하고 싶습니다. 그리고 다시 그전에 있던 액티비티로 돌아가 불러오면 그전의 값들과 두번째 불러온 값이 둘다 저장이 되게끔 하고 싶습니다. 저는 그 값들이 사용자가 초기화 버튼을 누르면 없어지게끔 하고 싶은데 어떻게 해야 될지 감이 오질 않네요..현재 액티비티에 그 값들을 호출 되있습니다!! 그 값들을 어떻게 저장해야 될지 잘 모르겠숩니다..ㅠ
그럼 앱이 실행되는 동안에만 값이 유용한것인가요?
앱을 껏다켜도 그값들이 유효해야 하는건가요?
전자라면 별도의 값을 관리하는 class를 하나 만들어서 static 변수로 선언하고(public static String value1;) "관리class.value1", "관리class.value1 = 값" 이런식으로 여기에 값을넣고 가져오고 하시면 됩니다.  이렇게되면 프리퍼런스를 쓰지 않아도 됩니다.
후자라면 key값으로 사용할 key만 서로 다르게 해서 저장하고 불러와서 사용하면 됩니다.
사용법은 찾아보시면 많이 나오니 설명드리지 않겠습니다.
앱이 실행돠는 동안에만 값이 유용하면 됩니다 제가아직 초보라서 그러는데 조금만더 설명을 해 주시면 안될까요???
그렇다면 프리퍼런스를 쓸 필요가 없습니다. 그래서 제가 프리퍼런스를 왜 쓰려고 한건지 물어본것이구요,

예제를 간단하게 드리면
public class Common {
    public static String value1;
    public static String value2;
}

Common 클래스를 만드시고(클래스명은 Common이 아니고 아무거나 상관없습니다.)
이 클래스에 있는 변수들로만 값을 컨트롤 합니다.

예로 액티비티에 intent로 String값을 data1이라는 키워드로 넘겼다고 치고
Common.value1 = getintent().getString("data1");

이렇게 static 변수에 값을 넣게되면 앱이 종료되기 전까지 값이 남아있을것 입니다.
value2도 마찬가지로 1처럼 저장하면 됩니다.
이제 보여주려면 Common.value1, Common.value2를 하게되면 저장되어 있는값을 어디에서나 사용할수 있게 됩니다.
만약 이 값들이 무수히 많아진다면 String 대신 ArrayList<String> 등으로 변경해서 사용하시면 됩니다. 일단 저장하고싶은 만큼 Common에 변수를 만들어 놓고 넣어서 사용해보시고,
적응이 좀 된다면 원하는 방향으로 조금씩 변경 하시면 될것 같습니다.

이 글의 핵심은 static 입니다. static 이 뭔지, 클래스메서드, 인스턴스메서드 등을 공부해보시면 도움이 많이 될것입니다.
...