2016-03-01 9 views
6

Ich habe nichts in Bezug auf meine Einstellungen zwischen diesem Build und dem letzten geändert, der funktioniert.Verbesserte Support-Bibliotheken auf 23.2.0 und ResourceNotFoundException mit PreferenceFragmen's CheckBoxPreference

Der Absturz tritt auf API 16 auf, während auf API 23 es funktioniert. Dies ist in Genymotion. Ich habe kein unteres reales Gerät zugänglich.

EDIT - Ich habe es seit einem Test auf einem Sony Xperia U mit 4.0.4 und den gleichen Absturz auftritt.

Ich glaube, ich habe es aufgrund der Aktualisierung der Support-Bibliotheken auf 23.2.0 aufgespürt, wie ich seither heruntergestuft habe und es funktioniert wieder.

Wer hat das noch erlebt?

03-01 18:36:20.693 1846-1846/? E/AndroidRuntime: FATAL EXCEPTION: main 
               android.view.InflateException: Binary XML file line #19: Error inflating class android.widget.CheckBox 
                at android.view.LayoutInflater.createView(LayoutInflater.java:613) 
                at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
                at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 
                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 
                at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 
                at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                at android.preference.Preference.onCreateView(Preference.java:480) 
                at android.preference.Preference.getView(Preference.java:451) 
                at android.preference.PreferenceGroupAdapter.getView(PreferenceGroupAdapter.java:221) 
                at android.widget.AbsListView.obtainView(AbsListView.java:2267) 
                at android.widget.ListView.makeAndAddView(ListView.java:1769) 
                at android.widget.ListView.fillDown(ListView.java:672) 
                at android.widget.ListView.fillFromTop(ListView.java:733) 
                at android.widget.ListView.layoutChildren(ListView.java:1608) 
                at android.widget.AbsListView.onLayout(AbsListView.java:2102) 
                at android.view.View.layout(View.java:13754) 
                at android.view.ViewGroup.layout(ViewGroup.java:4362) 
                at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649) 
                at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507) 
                at android.widget.LinearLayout.onLayout(LinearLayout.java:1420) 
                at android.view.View.layout(View.java:13754) 
                at android.view.ViewGroup.layout(ViewGroup.java:4362) 
                at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
                at android.view.View.layout(View.java:13754) 
                at android.view.ViewGroup.layout(ViewGroup.java:4362) 
                at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649) 
                at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507) 
                at android.widget.LinearLayout.onLayout(LinearLayout.java:1420) 
                at android.view.View.layout(View.java:13754) 
                at android.view.ViewGroup.layout(ViewGroup.java:4362) 
                at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
                at android.view.View.layout(View.java:13754) 
                at android.view.ViewGroup.layout(ViewGroup.java:4362) 
                at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1866) 
                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1687) 
                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998) 
                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212) 
                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
                at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
                at android.view.Choreographer.doFrame(Choreographer.java:525) 
                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
                at android.os.Handler.handleCallback(Handler.java:615) 
                at android.os.Handler.dispatchMessage(Handler.java:92) 
                at android.os.Looper.loop(Looper.java:137) 
                at android.app.ActivityThread.main(ActivityThread.java:4745) 
                at java.lang.reflect.Method.invokeNative(Native Method) 
                at java.lang.reflect.Method.invoke(Method.java:511) 
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                at dalvik.system.NativeStart.main(Native Method) 
                Caused by: java.lang.reflect.InvocationTargetException 
                at java.lang.reflect.Constructor.constructNative(Native Method) 
                at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
                at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
                at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)  
                at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660)  
                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685)  
                at android.view.LayoutInflater.inflate(LayoutInflater.java:466)  
                at android.view.LayoutInflater.inflate(LayoutInflater.java:396)  
                at android.view.LayoutInflater.inflate(LayoutInflater.java:352)  
                at android.preference.Preference.onCreateView(Preference.java:480)  
                at android.preference.Preference.getView(Preference.java:451)  
                at android.preference.PreferenceGroupAdapter.getView(PreferenceGroupAdapter.java:221)  
                at android.widget.AbsListView.obtainView(AbsListView.java:2267)  
                at android.widget.ListView.makeAndAddView(ListView.java:1769)  
                at android.widget.ListView.fillDown(ListView.java:672)  
                at android.widget.ListView.fillFromTop(ListView.java:733)  
                at android.widget.ListView.layoutChildren(ListView.java:1608)  
                at android.widget.AbsListView.onLayout(AbsListView.java:2102)  
                at android.view.View.layout(View.java:13754)  
                at android.view.ViewGroup.layout(ViewGroup.java:4362)  
                at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)  
                at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)  
                at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)  
                at android.view.View.layout(View.java:13754)  
                at android.view.ViewGroup.layout(ViewGroup.java:4362)  
                at android.widget.FrameLayout.onLayout(FrameLayout.java:448)  
                at android.view.View.layout(View.java:13754)  
                at android.view.ViewGroup.layout(ViewGroup.java:4362)  
                at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)  
                at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507)  
                at android.widget.LinearLayout.onLayout(LinearLayout.java:1420)  
                at android.view.View.layout(View.java:13754)  
                at android.view.ViewGroup.layout(ViewGroup.java:4362)  
                at android.widget.FrameLayout.onLayout(FrameLayout.java:448)  
                at android.view.View.layout(View.java:13754)  
                at android.view.ViewGroup.layout(ViewGroup.java:4362)  
                at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1866)  
                at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1687)  
                at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)  
                at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)  
                at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)  
                at android.view.Choreographer.doCallbacks(Choreographer.java:555)  
                at android.view.Choreographer.doFrame(Choreographer.java:525)  
                at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)  
                at android.os.Handler.handleCallback(Handler.java:615)  
                at android.os.Handler.dispatchMessage(Handler.java:92)  
                at android.os.Looper.loop(Looper.java:137)  
                at android.app.ActivityThread.main(ActivityThread.java:4745)  
                at java.lang.reflect.Method.invokeNative(Native Method)  
                at java.lang.reflect.Method.invoke(Method.java:511)  
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
                at dalvik.system.NativeStart.main(Native Method)  
                Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_btn_check_material.xml from drawable resource ID #0x7f020003 
                at android.content.res.Resources.loadDrawable(Resources.java:1918) 
                at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
                at android.widget.CompoundButton.<init>(CompoundButton.java:74) 
                at android.widget.CheckBox.<init>(CheckBox.java:68) 
                at android.widget.CheckBox.<init>(C 
+1

Ich habe das gleiche Problem. Es scheint ein Fehler in appcompat 23.2.0 zu sein. Siehe auch http://stackoverflow.com/questions/35618098/android-support-libraries-23-2-0-cause-app-to-crash?rq=1 – Valelik

+0

Vielen Dank für diese Frage und update. Sparte mir viel Zeit und Mühe, das gleiche Problem aufzuspüren. Für Informationen gibt es jetzt eine Version der Support-Bibliotheken (23.2.1), in denen das Problem verschwindet. – SimonH

Antwort

0

Was geholfen mich erweitert AppCompatActivity Tätigkeits insted in meinen Vorlieben Bildschirm

+1

Ich erweitere PreferenceActivity so, dass ich 'AppCompatActivity' nicht wirklich erweitern kann, denke ich nicht – StuStirling

0

Wie Sie die Support-Bibliothek verwenden, nehme ich an, dass es kein Problem ist, wenn Sie die AppCompatCheckbox anstelle des Standard einmal verwenden.

Sie können dies mit einem benutzerdefinierten Layout tun, das weitgehend identisch mit dem Standard ist, aber die Checkbox durch die AppCompat Version ersetzt.

Da wir das Standard-Checkbox-Layout, in dem der Fehler auftritt, nicht mehr verwenden, tritt der Absturz nicht mehr auf.

Ich bevorzuge diese Methode, auch wenn die Support-Bibliothek korrekt funktioniert, da es mir ermöglicht, die AppCompatCheckbox durch eine AppCompatRadioButton zu ersetzen, wenn die Notwendigkeit auftritt.

PreferenceScreen xml:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

    <CheckBoxPreference android:layout="@layout/custom_checkbox_pref" android:key="whatever" android:title="The Title"/> 

</PreferenceScreen> 

Layout: custom_checkbox_pref.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center_vertical" 
      android:minHeight="?android:attr/listPreferredItemHeight" 
      android:paddingEnd="?android:attr/scrollbarSize" 
      tools:ignore="RtlSymmetry"> 

<RelativeLayout 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="6dp" 
    android:layout_marginEnd="6dp" 
    android:layout_marginStart="15dp" 
    android:layout_marginTop="6dp" 
    android:layout_weight="1"> 

    <TextView 
     android:id="@android:id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ellipsize="marquee" 
     android:fadingEdge="horizontal" 
     android:singleLine="true" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     tools:text="Title"/> 

    <TextView 
     android:id="@android:id/summary" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignStart="@android:id/title" 
     android:layout_below="@android:id/title" 
     android:maxLines="4" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     tools:text="Summary"/> 

</RelativeLayout> 

<android.support.v7.widget.AppCompatCheckBox 
    android:id="@+android:id/checkbox" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="center" 
    android:clickable="false" 
    android:focusable="false"/> 

</LinearLayout>