簡體   English   中英

單擊列表首選項時應用崩潰

[英]App Crashing when clicking on list preference

我目前正在向我的應用添加“偏好設置/設置”活動。 我一直遇到問題。 preference.xml文件可以很好地加載,但是當我嘗試單擊列表首選項或“ Edit Text首選項時,它會由於以下堆棧跟蹤而使活動崩潰:

10-06 11:11:20.464 16629-16629/com.example.benhouse.weatherview E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.example.benhouse.weatherview, PID: 16629
                                                                              android.content.res.Resources$NotFoundException: File res/drawable/dialog_background_material.xml from color state list resource ID #0x108026d
                                                                                  at android.content.res.Resources.loadColorStateListForCookie(Resources.java:2750)
                                                                                  at android.content.res.Resources.loadColorStateList(Resources.java:2699)
                                                                                  at android.content.res.TypedArray.getColor(TypedArray.java:439)
                                                                                  at com.android.internal.policy.PhoneWindow.generateLayout(PhoneWindow.java:3777)
                                                                                  at com.android.internal.policy.PhoneWindow.installDecor(PhoneWindow.java:3981)
                                                                                  at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:383)
                                                                                  at com.android.internal.app.AlertController.installContent(AlertController.java:233)
                                                                                  at android.app.AlertDialog.onCreate(AlertDialog.java:423)
                                                                                  at android.app.Dialog.dispatchOnCreate(Dialog.java:394)
                                                                                  at android.app.Dialog.show(Dialog.java:295)
                                                                                  at android.preference.DialogPreference.showDialog(DialogPreference.java:319)
                                                                                  at android.preference.DialogPreference.onClick(DialogPreference.java:277)
                                                                                  at android.preference.Preference.performClick(Preference.java:994)
                                                                                  at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:214)
                                                                                  at android.widget.AdapterView.performItemClick(AdapterView.java:310)
                                                                                  at android.widget.AbsListView.performItemClick(AbsListView.java:1145)
                                                                                  at android.widget.AbsListView$PerformClick.run(AbsListView.java:3042)
                                                                                  at android.widget.AbsListView$3.run(AbsListView.java:3879)
                                                                                  at android.os.Handler.handleCallback(Handler.java:739)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                               Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid color state list tag inset
                                                                                  at android.content.res.ColorStateList.createFromXmlInner(ColorStateList.java:217)
                                                                                  at android.content.res.ColorStateList.createFromXml(ColorStateList.java:201)
                                                                                  at android.content.res.Resources.loadColorStateListForCookie(Resources.java:2746)
                                                                                  at android.content.res.Resources.loadColorStateList(Resources.java:2699) 
                                                                                  at android.content.res.TypedArray.getColor(TypedArray.java:439) 
                                                                                  at com.android.internal.policy.PhoneWindow.generateLayout(PhoneWindow.java:3777) 
                                                                                  at com.android.internal.policy.PhoneWindow.installDecor(PhoneWindow.java:3981) 
                                                                                  at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:383) 
                                                                                  at com.android.internal.app.AlertController.installContent(AlertController.java:233) 
                                                                                  at android.app.AlertDialog.onCreate(AlertDialog.java:423) 
                                                                                  at android.app.Dialog.dispatchOnCreate(Dialog.java:394) 
                                                                                  at android.app.Dialog.show(Dialog.java:295) 
                                                                                  at android.preference.DialogPreference.showDialog(DialogPreference.java:319) 
                                                                                  at android.preference.DialogPreference.onClick(DialogPreference.java:277) 
                                                                                  at android.preference.Preference.performClick(Preference.java:994) 
                                                                                  at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:214) 
                                                                                  at android.widget.AdapterView.performItemClick(AdapterView.java:310) 
                                                                                  at android.widget.AbsListView.performItemClick(AbsListView.java:1145) 
                                                                                  at android.widget.AbsListView$PerformClick.run(AbsListView.java:3042) 
                                                                                  at android.widget.AbsListView$3.run(AbsListView.java:3879) 
                                                                                  at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                  at android.os.Looper.loop(Looper.java:148) 
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5417) 
                                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

看起來崩潰是由不存在dialog_background_material.xml引起的,但通過無數示例來看,沒有提到需要添加這樣的文件,因此我認為它是應該添加sdk或gradle的文件。

這是我的Gradle文件:

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
    applicationId "com.example.benhouse.weatherview"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    vectorDrawables.useSupportLibrary = true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', 
{
    exclude group: 'com.android.support', module: 'support-annotations'
  })

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.github.bumptech.glide:glide:3.5.2'
compile 'com.android.support:support-v4:25.0.0'
compile 'com.android.support:design:25.3.1'
compile 'com.jsibbold:zoomage:1.1.0'
compile 'com.android.support:support-vector-drawable:25.3.1'
testCompile 'junit:junit:4.12'
}

和我的prefFragment

import android.os.Bundle;
import android.preference.PreferenceFragment;

public class PrefsFragment extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preference);
    }

} 

preference.xml

 <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">


    <PreferenceCategory
        android:title="PreferenceCategory A">

        <CheckBoxPreference
            android:key="checkbox_preference"
            android:title="title_checkbox_preference"
            android:summary="summary_checkbox_preference" />

    </PreferenceCategory>

    <PreferenceCategory
        android:title="PreferenceCategory B">

        <EditTextPreference
            android:key="edittext_preference"
            android:title="title_edittext_preference"
            android:summary="summary_edittext_preference"
            android:dialogTitle="dialog_title_edittext_preference" />

    </PreferenceCategory>

    <PreferenceCategory
        android:title="ListPreference">

        <ListPreference
            android:key="list_preference"
            android:title="title_list_preference"
            android:summary="summary_list_preference"
            android:entries="@array/listDisplayWord"
            android:entryValues="@array/listReturnValue"
            android:dialogTitle="dialog_title_list_preference" />

    </PreferenceCategory>
    </PreferenceScreen>

當我瀏覽了許多示例和問題時,我真的感到很困惑,沒有人提到這樣的問題,並使用類似的代碼來使它們的屏幕正常工作。

我遇到了同樣的問題,並通過切換到Android支持庫中的android.support.v14.preference.PreferenceFragment解決了該問題。 請注意,您可能還需要將其他類更改為其支持庫變體。

暫無
暫無

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

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