2016-05-30 4 views
2

Nach der Aktualisierung der Android-Design und Support-Bibliotheken auf 23.3.0 aktualisieren, die benutzerdefinierte lineare Layout-Manager wirft diese Ausnahme:Android benutzerdefinierte lineare Layout-Manager liefert 0 Elementanzahl nach Support-Bibliotheken auf 23.3.0

java.lang.IndexOutOfBoundsException: Invalid item position 0(0). Item count:0 
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4622) 
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4617) 
at com.gibbr.utility.MyLinearLayoutManager.onMeasure(MyLinearLayoutManager.java:29) 
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2614) 
at android.view.View.measure(View.java:17547) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) 
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) 
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
at android.view.View.measure(View.java:17547) 
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727) 
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463) 
at android.view.View.measure(View.java:17547) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) 
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) 
at android.view.View.measure(View.java:17547) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) 
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) 
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
at android.view.View.measure(View.java:17547) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) 
at android.view.View.measure(View.java:17547) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) 
at android.view.View.measure(View.java:17547) 
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5535) 
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2615) 
at android.view.View.measure(View.java:17547) 
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2015) 
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1173) 
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1379) 
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061) 
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885) 
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 
at android.view.Choreographer.doCallbacks(Choreographer.java:580) 
at android.view.Choreographer.doFrame(Choreographer.java:550) 
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5254) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

Erste Fehler in dieser Zeile:

View view = recycler.getViewForPosition(position); 

Dies ist der Code für RecyclerView, auf das ich diesen Layout-Manager bin Bindung:

<android.support.v7.widget.RecyclerView 
     android:id="@+id/handle_recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/theme_primary" 
     android:scrollbars="horizontal" 
     android:visibility="gone"/> 

Früher mit der Support-Bibliothek Version 23.1.0, es war in Ordnung, aber nach der Aktualisierung ist das Werfen Fehler. Außerdem muss ich es auf 23.3.0 aktualisieren, da ich NavigationView in der Designbibliothek 23.1.0 nicht hinzufügen kann. Es wirft folgende Fehler in XML-Datei:

The following classes could not be instantiated: 
- android.support.design.widget.NavigationView (Open Class, Show Exception, Clear Cache) 
Tip: Use View.isInEditMode() in your custom views to skip code or show sample data when shown in the IDE Exception Details java.lang.ClassNotFoundException: android.support.v7.internal.view.SupportMenuInflater 

und die folgenden Fehler auf der Laufzeit:

05-30 12:40:08.633 17955-17955/com.main E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.main, PID: 17955 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.main/com.main.mainActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class android.support.design.widget.NavigationView 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
at android.app.ActivityThread.access$800(ActivityThread.java:151) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5254) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class android.support.design.widget.NavigationView 
at android.view.LayoutInflater.createView(LayoutInflater.java:633) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276) 
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136) 
at com.main.mainActivity.onCreate(mainActivity.java:102) 
at android.app.Activity.performCreate(Activity.java:5990) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
at android.app.ActivityThread.access$800(ActivityThread.java:151)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:135)  
at android.app.ActivityThread.main(ActivityThread.java:5254)  
at java.lang.reflect.Method.invoke(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:372)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)  
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Constructor.newInstance(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
at android.view.LayoutInflater.createView(LayoutInflater.java:607) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)  
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)  
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)  
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136)  
at com.main.mainActivity.onCreate(mainActivity.java:102)  
at android.app.Activity.performCreate(Activity.java:5990)  
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)  
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)  
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
at android.app.ActivityThread.access$800(ActivityThread.java:151)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:135)  
at android.app.ActivityThread.main(ActivityThread.java:5254)  
at java.lang.reflect.Method.invoke(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:372)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)  
Caused by: java.lang.NoClassDefFoundError: android.support.design.internal.NavigationMenuPresenter 
at android.support.design.widget.NavigationView.<init>(NavigationView.java:82) 
at android.support.design.widget.NavigationView.<init>(NavigationView.java:94) 
at java.lang.reflect.Constructor.newInstance(Native Method)  
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)  
at android.view.LayoutInflater.createView(LayoutInflater.java:607)  
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)  
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)  
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)  
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)  
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136)  
at com.main.mainActivity.onCreate(mainActivity.java:102)  
at android.app.Activity.performCreate(Activity.java:5990)  
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)  
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)  
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
at android.app.ActivityThread.access$800(ActivityThread.java:151)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:135)  
at android.app.ActivityThread.main(ActivityThread.java:5254)  
at java.lang.reflect.Method.invoke(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:372)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)  

Bitte leite mich, wie diese zu beheben!

Antwort

0

Ich hatte das gleiche Problem mit einem Recycler anzeigen Update Support-Bibliotheken von 23.1.1 bis 25.0.1. In meinem Fall musste ich eine benutzerdefinierte LinearLayoutManager-Extension-Klasse (WrappingLinearLayoutManager) entfernen und verwendete einfach einen LinearLayoutManager.

geändert

recyclerView.setLayoutManager(new WrappingLinearLayoutManager(ctx)); 

zu

recyclerView.setLayoutManager(new LinearLayoutManager(ctx)); 

Ich hoffe, das Ihnen helfen kann.