SharedPreferences관련해서...

조회수 564회

폰으로 작성하여 부족한 부분이 많은점 양해부탁드리며, 이상한 부분을 알려주신다면 제가 나중에 컴터로 재질문을 올리거나 답글을 달겠습니다ㅜㅜ

public static SharedPreferences _Saved_Data = Context.getSharedPreferences("Settings", Context.MODE_PRIVATE);
public static SharedPreferences.Editor _Data_Edit = _Saved_Data.edit();

요런식으로 만들어두고 다른 플래그먼트에서 참조하려고 하는데 getSharedPreferences 앞 부분에서 계속 오류가 발생합니다 자마린에서는 Application.Context로 해결이 되었는데 안드로이드 스튜디오에서는 도대체 어떻게 해결을 해야하나요... 도무지 답이 안나오네요ㅠㅠ

일단 설명을 길게 하지 못하는 점에 대해서 죄송합니다

말하자면 별도의 클래스 파일을 만들어 그곳에 쉐어드를 정의하고 다른 각기 다른 클래스 파일에서 저 쉐어드를 호출해서 사용하려고 합니다 그런데 c#에서는 위에처럼 해서 잘 되던게 Java로 넘어오면서 ApplicationContext도 안되고 아무것도 안됩니다ㅠ 문제는 이게 오류는 없는데 저걸 사용하는 곳의 메뉴를 누르는 순간 튕겨져버린다는겁니다...

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • Xamarin 에 대해서는 잘 모르기 때문에 답변드리는 것이 조심스럽습니다만, Xamarin 에서는 Context 를 static 변수로 사용 할 수 있는 것으로 보이네요.

    우선은 컴파일 오류는 없다고 하시니, 앱이 죽는 상황에서 로그를 첨부를 해주시는 것이 답변 드리는데 도움이 될 것 같습니다.

    덧붙이자면 일반적으로 Preference 관련 Util 클래스를 작성해야 할때 아래와 같이 작성하여 사용 하곤 합니다. 꼭 Xamarin 에서 처럼 Preference 를 static 변수로 사용해야 한다면 Context 까지 static 변수로 사용하도록 처리해야 하는데, 권해드리고 싶은 방식은 아닙니다.

    public class PreferenceUtils {
        private static final String PREF_SETTINGS = "pref_settings";
        private static final String KEY_ALARM = "key_alarm";
    
        private PreferenceUtils(){ }
    
        public static boolean getAlarmOnOffValue(Context context) {
            final SharedPreferences pref = context.getSharedPreferences(PREF_SETTINGS, Context.MODE_PRIVATE);
            return pref.getBoolean(KEY_ALARM, false);
        }
    
        public static void setAlarmOnOffValue(Context context, boolean value) {
            final SharedPreferences.Editor editor = context.getSharedPreferences(PREF_SETTINGS, Context.MODE_PRIVATE).edit();
            editor.putBoolean(KEY_ALARM, value);
            editor.apply();
        }
    }
    
    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 글 수정에 답변까지 정말 감사합니다ㅠ 덕분에 해결했습니다! 정말 너무너무 감사합니다.. 답답해 죽을뻔했는데 ㅠ 알 수 없는 사용자 2018.12.12 13:55

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)