gpt4 book ai didi

android - 如何修复 "Dependency "开关“找不到首选项 "screen"

转载 作者:行者123 更新时间:2023-11-29 02:22:26 24 4
gpt4 key购买 nike

找不到偏好“屏幕”的依赖“开关”

当我使用 ListPreference 时,android:dependency="switch"一切正常,当我关闭 android:dependency="switch"时 - 我可以打开 PreferenceScreen。

但要解锁 SwitchPreference 并打开 PreferenceScreen - 会出错。

java.lang.IllegalStateException:找不到首选项“屏幕”的依赖项“开关”(标题:“屏幕”

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:title="Switch"
android:key="switch"
android:summaryOn="Description of switch 2 on"
android:summaryOff="Description of switch 2 off"/>
<PreferenceScreen
android:dependency="switch"
android:key="screen"
android:summaryOn="Description of screen on"
android:summaryOff="Description of screen off"
android:title="Screen">
<CheckBoxPreference
android:summaryOn="Description of checkbox on"
android:summaryOff="Description of checkbox off"
android:title="CheckBox"
android:key="checkbox"/>
</PreferenceScreen>
</PreferenceScreen>

最佳答案

我以编程方式解决了这个问题,但只有 xml 不起作用

class SettingsFragment : PreferenceFragmentCompat(), PreferenceFragmentCompat.OnPreferenceStartScreenCallback {

override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.ex_003_preference, rootKey)
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

val switch = preferenceScreen.findPreference("switch") as SwitchPreference
val screen = preferenceManager.findPreference("screen") as PreferenceScreen
screen.isEnabled = false
switch.isChecked = false
switch.setOnPreferenceClickListener {
screen.isEnabled = switch.isChecked
return@setOnPreferenceClickListener false
}

return super.onCreateView(inflater, container, savedInstanceState)
}

override fun onPreferenceStartScreen(preferenceFragmentCompat: PreferenceFragmentCompat?, preferenceScreen: PreferenceScreen?): Boolean {
preferenceFragmentCompat?.preferenceScreen = preferenceScreen
return true
}

override fun getCallbackFragment(): Fragment {
return this
}

关于android - 如何修复 "Dependency "开关“找不到首选项 "screen",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54544995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com