如何解决android-如何在Kotlin的设置活动首选项中使用侦听器
我没有java / kotlin / android背景,已经尝试了一周。我停留在设置活动监听器
我使用新建>活动>设置活动创建了设置活动,并添加了SeekBar
但是无论我如何尝试,我都无法使println("triggered")
零件正常工作
我在做什么错?请不要忘记我是新手,而
谢谢
PS:API级别为21
SettingsActivity.kt
import android.os.Bundle
import android.text.InputType
import android.view.inputmethod.EditorInfo
import android.widget.EditText
import android.widget.SeekBar
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.EditTextPreference
import androidx.preference.PreferenceFragmentCompat
class SettingsActivity2 : AppCompatActivity(),SeekBar.OnSeekBarchangelistener,EditTextPreference.OnBindEditTextListener {
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() {
override fun onCreatePreferences(savedInstanceState: Bundle?,rootKey: String?) {
setPreferencesFromresource(R.xml.root_preferences,rootKey)
}
}
override fun onProgressChanged(seekBar: SeekBar?,progress: Int,fromUser: Boolean) {
println("triggered1")
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
println("triggered2")
}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
println("triggered3")
}
override fun onBindEditText(editText: EditText) {
println("triggered4")
}
}
root_preferences.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory app:title="@string/messages_header">
<EditTextPreference
app:key="signature"
app:title="@string/signature_title"
app:useSimpleSummaryProvider="true" />
<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" />
<SeekBarPreference
android:key="seekbar_preference"
android:title="Brightness"
android:summary="@string/value_percentage"
android:progress="0"
app:showSeekBarValue="true" />
</PreferenceCategory>
<PreferenceCategory app:title="@string/sync_header">
<SwitchPreferenceCompat
app:key="sync"
app:title="@string/sync_title" />
<SwitchPreferenceCompat
app:dependency="sync"
app:key="attachment"
app:summaryOff="@string/attachment_summary_off"
app:summaryOn="@string/attachment_summary_on"
app:title="@string/attachment_title" />
</PreferenceCategory>
</PreferenceScreen>
解决方法
您必须使用OnPreferenceChangeListener
示例
val seekbarPreference: SeekBarPreference? = findPreference("seekbar_preference")
seekbarPreference!!.onPreferenceChangeListener =
Preference.OnPreferenceChangeListener { preference,newValue ->
println("triggered1")
true
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。