![](/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.