2

ich folgenden Absturz hätte von einem bestimmten Benutzer nur einmal berichtete auf Android 4.0.3. Ich sehe keine Referenzen im Stack-Trakt zu meinem Code und ich frage mich, ob jemand irgendwelche Ideen hat, was dieses Problem verursachen könnte?Stackoverflow und ich kann nicht herausfinden, warum

Offensichtlich nicht die höchste Priorität, weil es nur einmal berichtet worden, aber ich würde immer noch verstehen mag. Ich bin nicht in der Lage, auf 4.0.2 zu reproduzieren (ich kann einen 4.0.3 Emulator laufen lassen).

Danke,

Stapelüberwachung:

java.lang.StackOverflowError 
android.text.TextLine.handleRun(TextLine.java:986) 
android.text.TextLine.measureRun(TextLine.java:430) 
android.text.TextLine.measure(TextLine.java:295) 
android.text.TextLine.metrics(TextLine.java:269) 
android.text.Layout.getLineExtent(Layout.java:947) 
android.text.Layout.draw(Layout.java:410) 
android.text.BoringLayout.draw(BoringLayout.java:400) 
android.widget.TextView.onDraw(TextView.java:5047) 
android.view.View.draw(View.java:10983) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.getDisplayList(View.java:10420) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.widget.FrameLayout.draw(FrameLayout.java:450) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.widget.AbsListView.dispatchDraw(AbsListView.java:2092) 
android.view.View.draw(View.java:10986) 
android.widget.AbsListView.draw(AbsListView.java:3398) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.widget.FrameLayout.draw(FrameLayout.java:450) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.getDisplayList(View.java:10420) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.widget.FrameLayout.draw(FrameLayout.java:450) 
android.widget.ScrollView.draw(ScrollView.java:1524) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.support.v4.view.ViewPager.draw(SourceFile:2336) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.getDisplayList(View.java:10420) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.support.v4.widget.DrawerLayout.drawChild(SourceFile:1373) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.getDisplayList(View.java:10420) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.widget.FrameLayout.draw(FrameLayout.java:450) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.getDisplayList(View.java:10420) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.view.View.getDisplayList(View.java:10422) 
android.view.ViewGroup.drawChild(ViewGroup.java:2856) 
android.view.ViewGroup.dispatchDraw(ViewGroup.java:2495) 
android.view.View.draw(View.java:10986) 
android.widget.FrameLayout.draw(FrameLayout.java:450) 
com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2198) 
android.view.View.getDisplayList(View.java:10422) 
android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:849) 
android.view.ViewRootImpl.draw(ViewRootImpl.java:1942) 
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1666) 
android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2474) 
android.os.Handler.dispatchMessage(Handler.java:99) 
android.os.Looper.loop(Looper.java:137) 
android.app.ActivityThread.main(ActivityThread.java:4447) 
java.lang.reflect.Method.invokeNative(Native Method) 
java.lang.reflect.Method.invoke(Method.java:511) 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
dalvik.system.NativeStart.main(Native Method) 

Hier XML ist meine Haupttätigkeit (derjenige, der Benutzer ein DrawerLayout). Lint meldet nichts Wichtiges und ich sehe hier kein offensichtliches Problem.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <!-- To show drawer over toolbar, move this down to right above frameLayout --> 

    <include 
     android:id="@+id/app_bar" 
     layout="@layout/app_bar" /> 

    <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/drawer_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      android:id="@+id/content_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@color/bg_offwhite"> 

      <FrameLayout 
       android:id="@+id/main_frag_container" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       tools:context="com.nsouth.myapp.Activity_Main" 
       tools:ignore="MergeRootFrame" /> 

     </RelativeLayout> 

     <android.support.design.widget.NavigationView 
      android:id="@+id/navigation_view" 
      android:layout_width="290dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="left" 
      android:theme="@style/MyNavViewTheme" 
      app:headerLayout="@layout/nav_drawer_header" 
      app:menu="@menu/nav_drawer_menu" /> 

    </android.support.v4.widget.DrawerLayout> 

    <android.support.design.widget.CoordinatorLayout 
     android:layout_width="match_parent" 
     android:layout_height="80dp" 
     android:layout_marginTop="-80dp" 
     android:id="@+id/snackbarPosition"> 
    </android.support.design.widget.CoordinatorLayout> 

    <LinearLayout 
     android:id="@+id/tv_main_debug_area" 
     android:layout_width="match_parent" 
     android:layout_height="40dp" 
     android:layout_marginTop="-40dp" 
     android:visibility="visible" 
     android:paddingLeft="10dp" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/tv_debug_pfeatures_status" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="unknown" /> 
     <TextView 
      android:id="@+id/tv_debug_pfeatures_daysremaining" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="unknown" /> 

    </LinearLayout> 

</LinearLayout> 
+0

Sie können mehrere verschachtelte Layouts haben. –

Antwort

0

Es ist sicher, dass Sie Layouts verschachtelt haben, so dass Sie diesen Fehler erhalten. See this question.

Darüber hinaus gibt layoutopt war die hierarchischen Layout-Probleme zu beheben, aber es jetzt durch lint nach dem SDK-Tools Revision 16.

So

verwenden lint

, die Sie leicht ersetzt ist, kann helfen zu erkennen und Behebung von Problemen mit der strukturellen Qualität Ihres Codes sowie die Android-Projekt Quelldateien für mögliche Fehler überprüft und Optimierung Verbesserungen für die Richtigkeit,

+0

Danke, ich werde 'Lint' laufen und morgen tiefer graben. Weißt du, wo ich nach diesen Fehlern suchen sollte? Ich habe "Lint" in meinem Aktivitätslayout ausgeführt, das mein 'DrawerLayout' enthält und keine roten Flaggen hat. Da das gelegentliche Layout innerhalb eines anderen Layouts in Android nicht ungewöhnlich ist, bin ich mir nicht sicher, welche Arten von Nesting * dieses Problem verursachen könnten. Ich habe meine Frage mit meiner Aktivitäts-XML aktualisiert. – NSouth

+0

Ja du hast Recht, Das Problem ist nur bei einigen Geräten mit 4 -...-... Versionen aufgetreten. Ich weiß, [Hierarchie-Viewer und Lint-Tool] (http://developer.android.com/tools/debugging/debugging-ui.html) hilft, dieses zu debuggen, aber leider habe ich diese alle bis heute nicht verwendet, damit ich habe kein tiefes Wissen darüber. Ich hoffe, Sie werden es bald verstehen und beheben. –