![](/img/trans.png)
[英]How to make a Preference long-clickable in PreferenceFragment?
[英]How to modify Androidx Preference data outside of PreferenceFragment?
我正在尝试实现一个自定义的无线电样式Preference
,用户可以单击一个选项,然后将该Preference
指定为首选项的新值:
这是我的布局:
的preferences.xml
<Preference
android:layout="@layout/preference_gender"
android:key="seeking"
android:title="Seeking"/>
preference_gender.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout>
<RadioGroup
android:id="@+id/gender_group"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatTextView
...
android:text="@string/seeking"/>
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/male"
android:text="Male"
/>
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/female"
android:text="Female"
/>
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/both"
android:text="Both"
/>
</RadioGroup>
</androidx.constraintlayout.widget.ConstraintLayout>
因为Preference.OnPreferenceClickListener
无法检测到内部的特定点击Preference
(只偏好作为一个整体),我已经使出添加onClick()
在XML,然后传递给我的活动功能:
然后到我的偏好片段:
class PreferencesFragment : PreferenceFragmentCompat(), View.OnClickListener, RadioGroup.OnCheckedChangeListener {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences, rootKey)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
gender_group.setOnCheckedChangeListener(this) // null pointer exception
}
}
但是我的findPreference("seeking")!!
得到了NullPointerException
findPreference("seeking")!!
。
有没有办法解决?
preference_gender.xml
根本没有Preference
键。 样式化的RadioGroup
&3 RadioButton
可能更适合在单个Preference
键下面表示这些按钮; 类似于AppCompatTextView
可能会呈现的节点 - 但不会像Preference
那样对待它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.