안드로이드/데이터 입출력

안드로이드 Preferences Screen

김어찐 2022. 6. 23. 15:29
728x90

UI를 통해서 Preferences를 사용할 수 있도록 제공되는 개념이다.
PreferenceFragment를 사용하며 저장 기능까지 모두 구현 되어 있다.

 

package com.example.preferencesscreen

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    val settingFragment = SettingFragment()
    val resultFragment = ResultFragment()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
            val tran = supportFragmentManager.beginTransaction()
            tran.replace(R.id.container,settingFragment)
            tran.commit()
        }

        button2.setOnClickListener {
            val tran = supportFragmentManager.beginTransaction()
            tran.replace(R.id.container,resultFragment)
            tran.commit()
        }
    }
}

 

 

package com.example.preferencesscreen

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.preference.PreferenceFragmentCompat

class SettingFragment : PreferenceFragmentCompat() {
    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        addPreferencesFromResource(R.xml.pref)
    }
}

pref.xml

 

package com.example.preferencesscreen

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.preference.PreferenceManager
import kotlinx.android.synthetic.main.fragment_result.*

class ResultFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val view = inflater.inflate(R.layout.fragment_result, null)
        return view
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        val pref = context?.let { PreferenceManager.getDefaultSharedPreferences(it) }
        val data1 = pref?.getString("data1",null)
        textView2.text = "data1 : $data1\n"

        val data2 = pref?.getBoolean("data2",false)
        textView2.append("data2 : $data2\n")

        val data3 = pref?.getBoolean("data3",false)
        textView2.append("data3 : $data3\n")

        val data4 = pref?.getString("data4",null)
        textView2.append("data4 : $data4\n")

        val data5 = pref?.getStringSet("data5",null)
        for (str in data5!!) {
            textView2.append("data5 : $str\n")
        }

    }
}

 

string.xml

<resources>
    <string name="app_name">PreferencesScreen</string>
    <string-array name="title_list">
        <item>항목1</item>
        <item>항목2</item>
        <item>항목3</item>
    </string-array>
    
    <string-array name="value_list">
        <item>value1</item>
        <item>value2</item>
        <item>value3</item>
    </string-array>

    <string-array name="default_list">
        <item>value1</item>
        <item>value3</item>
    </string-array>
</resources>
728x90