SharedPreference 사용하기

미미·2023년 8월 20일
0

안드로이드

목록 보기
3/6

안드로이드 SharedPreferences 공식문서
https://developer.android.com/training/data-storage/shared-preferences?hl=ko

💡 SharedPreferences는 액티비티에서 가져와 사용해야한다.

1. SharedPreferences에 값 저장하기

	// sharedPreference에 저장하는 예시
      dialog.setPositiveButton("저장"){ _, _ ->
                activity?.getSharedPreferences("WEB_HISTORY",Context.MODE_PRIVATE)?.edit {
                    putString("tab$position",editText.text.toString())
                }

            }
            

리소스 문자열 "WEB_HISTORY"로 식별되는 공유 환경설정 파일에 액세스하고 비공개 모드를 사용하여 파일을 열므로 앱에서만 파일에 액세스할 수 있습니다.

SharedPreferences에서 람다함수를 사용하여 edit()을 호출하고 putInt() 및 putString()과 같은 메서드를 사용 하여 쓰려고 하는 키와 값을 전달합니다.



2. SharedPreferences에서 값 가져와 사용하기

       
	// sharedPreference에서 저장한 값을 사용하는 예시
         binding.backToLastButton.setOnClickListener {
            val sharedPreferences = activity?.getSharedPreferences("WEB_HISTORY", Context.MODE_PRIVATE)
            val url = sharedPreferences?.getString("tab$position","")
        }


만약 프래그먼트나 액티비티가 아닌 곳(클래스와 같은곳)에서 사용하여 액티비티를 가져올수 없다면?
클래스 파일일 경우 매개변수로 함수를 넘겨받아 액티비티를 쓸수있는 곳에서 매개변수함수로 구현하도록함.

  • 먼저 매개변수 함수를 받는 클래스로 작성
class WebtoonWebViewClient(
    private val progressBar: ProgressBar,
    private val saveData: (String) -> Unit, // 함수를 매개변수로 받음
) : WebViewClient() {

	// WebView에서 로딩시 webtoon/detail 페이지에 들어갈경우 url을 저장
    override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {

        if(request != null && request.url.toString().contains("comic.naver.com/webtoon/detail")) {
            saveData(request.url.toString()) // 매개변수 전달받은 함수 사용
        }


        return super.shouldOverrideUrlLoading(view, request)

    }
...
  • 매개변수로 함수를 전달
// 람다함수를 사용하여 매개변수 함수를 전달
binding.webView.webViewClient = WebtoonWebViewClient(binding.progressBar){ url ->
            activity?.getSharedPreferences(SHARED_PREFERENCE, Context.MODE_PRIVATE)?.edit {
                putString("tab$position",url)
            }
        }
        

0개의 댓글