簡體   English   中英

如何在PreferenceFragment之外修改Androidx Preference數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM