使用androidx dropdownPreference的正确方法是什么?

时间:2019-12-02 13:27:39

标签: android android-preferences androidx

我正在使用下拉首选项,但每次尝试安装时应用程序都会崩溃。 entryValues和条目应该是什么?官方文档没有解释xml的用法。在api 25和21上进行了测试。

<androidx.preference.PreferenceCategory app:title="@string/Time">

    <androidx.preference.DropDownPreference
        android:key="dropdown"
        android:title="@string/waitTime"
        android:entryValues="@array/planets_array"
        android:entries="@array/times"
        app:useSimpleSummaryProvider="true"
        />


</androidx.preference.PreferenceCategory>
</androidx.preference.PreferenceScreen>

string.xml:

 <resources>
    <string-array name="planets_array">
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
</string-array>

<integer-array name="times">
    <item>5</item>
    <item>10</item>
    <item>15</item>
    <item>20</item>

</integer-array>
</resources>

日志:

Process: com.example.detector, PID: 11439
android.view.InflateException: Binary XML file line #22: Error inflating class androidx.preference.DropDownPreference
    ...
androidx.preference.PreferenceFragmentCompat.setPreferencesFromResource(PreferenceFragmentCompat.java:377)
    at com.example.breathdetector.ui.customization.CustomizationFragment.onCreatePreferences(CustomizationFragment.java:24)
 androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1830)
   ...
 Caused by: java.lang.reflect.InvocationTargetException
   ...androidx.preference.PreferenceFragmentCompat.setPreferencesFromResource(PreferenceFragmentCompat.java:377) 
    at com.example.breathdetector.ui.customization.CustomizationFragment.onCreatePreferences(CustomizationFragment.java:24) 
    at androidx.preference.PreferenceFragmentCompat.onCreate(PreferenceFragmentCompat.java:160) 
    at androidx.fragment.app.Fragment.performCreate(Fragment.java:2586) 
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:838) 
    at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManagerImpl.java:2100) 
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1874) 

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

看看示例:

arrays xml

preferences xml

很难从stacktrace得知,但这可能是因为您使用的是整数数组-我认为DropDownPreference仅适用于条目和条目值的字符串数组。

希望这会有所帮助!