안드로이드/데이터 입출력
안드로이드 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