SettingsActivity的代码
class SettingsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.settings_activity)
if (savedInstanceState == null) {
supportFragmentManager
.beginTransaction()
.replace(R.id.settings, SettingsFragment())
.commit()
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
}
class SettingsFragment : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.root_preferences, rootKey)
findPreference<SwitchPreferenceCompat>("KEY_SWITCH_1")?.onPreferenceChangeListener =
this
}
override fun onPreferenceChange(preference: Preference?, newValue: Any?): Boolean {
when(val key = preference?.key){
"KEY_SWITCH_1"->{
Log.d("wang", "选择了:$key/$newValue")
return true
}
}
return false //不保存
}
}
}
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/sync_header">
<SwitchPreferenceCompat
app:key="sync"
app:title="@string/sync_title" />
</PreferenceCategory>
<SwitchPreferenceCompat
app:key="sync"
app:title="@string/sync_dialtone" />
<ListPreference
app:defaultValue="reply"
app:entries="@array/reply_entries"
app:entryValues="@array/reply_values"
app:key="reply"
app:title="@string/reply_title"
app:useSimpleSummaryProvider="true">
</ListPreference>
</PreferenceScreen>