簡體   English   中英

當我按PreferfenceFragmentCompat中的列表首選項時,應用崩潰

[英]App crash when i press the list preference in PreferfenceFragmentCompat

當我按下列表首選項時,應用程序崩潰並顯示以下異常:-

FATAL EXCEPTION: main
                                                                    Process: co.veemu.populermovies, PID: 25247
                                                                    java.lang.ClassCastException: android.support.v7.preference.PreferenceScreen cannot be cast to android.support.v7.preference.DialogPreference
                                                                        at android.support.v7.preference.PreferenceDialogFragmentCompat.onCreate(PreferenceDialogFragmentCompat.java:89)
                                                                        at android.support.v7.preference.ListPreferenceDialogFragmentCompat.onCreate(ListPreferenceDialogFragmentCompat.java:48)
                                                                        at android.support.v4.app.Fragment.performCreate(Fragment.java:2180)
                                                                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1244)
                                                                        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
                                                                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
                                                                        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)
                                                                        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)
                                                                        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)
                                                                        at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
                                                                        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013)
                                                                        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)
                                                                        at android.os.Handler.handleCallback(Handler.java:751)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                        at android.os.Looper.loop(Looper.java:154)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:6178)
                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)

這就是我做的listpreference:-

我添加了這個gradle依賴

compile 'com.android.support:preference-v7:25.3.1'

2-並在res / xml文件夾中創建首選項文件,這是包含的文件

    <ListPreference

    android:title="@string/pref_sort_order_title"
    android:defaultValue="@string/pref_sort_des_value"
    android:entries="@array/pref_sort_entres"
    android:entryValues="@array/pref_sort_entres_value"
    android:summary="sort order"


    />

3-使用布局資源文件進行活動,布局的根標記是片段,該片段指向從PreferenceFragmentCompat擴展的類

4-制作PreferenceFragmentCompat並在onCreatePreference()中填充首選項

  @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
    addPreferencesFromResource(R.xml.preference_sort);

}

5-我在AppTheme中添加了主題:-

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <!-- this is the preference theme -->
    <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>


</style>

但是應用程序崩潰並出現上述異常,我不知道代碼出了什么問題

我知道已經有點晚了,但是最近我遇到了同樣的問題,所以我搜索並找到了解決方案。

實際上,這很容易解決,
Dialog Preference需要具有唯一的android:key才能正常工作,因此您要做的就是將android:key屬性添加到XML文件中的ListPreference中。

<ListPreference
        android:title="List"
        android:key="list" <!-- Add this to your code -->
        android:entries="@array/entries"
        android:entryValues="@array/values"
        android:defaultValue="Default">
</ListPreference>

希望這可以幫助您解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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