1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

View-Reihenfolge ändern führt zu Absturz

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von AquaBall, 03.05.2012.

  1. AquaBall, 03.05.2012 #1
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Ich bastle an einem CustomView, das an sich funktioniert.
    Aber wenn ich es verschiebe stürzt Activity ab.

    Ich kann nicht alles posten (will ich niemandem zumuten).
    Aber seltsamerweise hängt der Fehler von der POSITION der Views in einem ganz normalen LinearLayout ab?!

    Der Code hier ist so banal, dass es mir fast peinlich ist, ihn zu posten,
    aber die Probleme treten NUR auf, wenn ich allein die Reihenfolge im XML ändere!?!?!
    Folgende Variante funktioniert problemlos:
    HTML:
            <EditText
                android:id="@+id/Ed3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="text" />
            <at.TyE.Test.HorizontalSlider
                android:id="@+id/skala"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:src="@drawable/mybar" />
            <EditText
                android:id="@+id/Ed4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="text" />
            <EditText
                android:id="@+id/Ed5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="text" />
    und Verschieben meines CustomViews um 1 Stelle stürzt schon beim Starten ab!
    HTML:
            <EditText
                android:id="@+id/Ed3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="text" />
            <EditText
                android:id="@+id/Ed4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="text" />
            <at.TyE.Test.HorizontalSlider
                android:id="@+id/skala"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:src="@drawable/mybar" />
            <EditText
                android:id="@+id/Ed5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="text" />
    FehlerProtokoll:
    Code:
    Shutting down VM
    05-03 01:20:04.543: W/dalvikvm(648): threadid=1: thread exiting with uncaught exception (group=0x40015560)
    FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{at.TyE.Test/at.TyE.Test.SliderTest}: java.lang.ClassCastException: android.widget.EditText
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:3683)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.ClassCastException: android.widget.EditText
    at at.TyE.Test.SliderTest.onCreate(SliderTest.java:23)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
         ... 11 more
    
    Ich hab schon alles auskommentiert,
    90% gelöscht.
    Dann geht's wieder einmal an einer Stelle und an einer anderen nicht, ...
    Hab schon Java und AVD neu gestartet,
    ...
    Ich weiß nicht wie ich noch suchen könnten.
    (Die Funktionalität des CustomViews ist ja in Ordnung, sofern das Programm überhaupt startet.)
    Übrigens: Meine Classe macht nichts was irgendwie mit Reihenfolge zu tun hat. Das einzig "exotisch" ist, dass sie ein ImagwView dynamisch anlegt.
    Aber auch wenn ich fast alles auskommentiere stürzt er bei Änderung der Reihenfolge ab.

    Die Probleme treten NUR auf, wenn ich die Reihenfolge der Views im XML ändere!?!?!
     
  2. swordi, 03.05.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hmm ist eigentlich sehr komisch

    ich würde mal behaupten ein project -> clean wird das lösen
     
    AquaBall bedankt sich.
  3. AquaBall, 03.05.2012 #3
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Swordi du bist (fast) genial!

    Jetzt funktioniert's (fast).

    Nach einem Clean läuft es (vorübergehend) "problemlos". Wenn ich dann aber WIEDER verschiebe stürzt er wieder ab.

    Also, hier ein ultrakurz Log: ("34c5" bedeutet die Reihenfolge der Views)
    HTML:
    Konstellation: 34c5 -> läuft
    View verschieben: 3c45 -> Absturz
    Rückverschieben: 34c5 -> läuft
    View verschieben: 3c45 -> Absturz
    Clean ohne Verschieben: (3c45) - LÄUFT
    Rückverschieben: 34c5 -> ABSTURZ (obwohl selbe Konstellation oben lief)
    Clean: 34c5 -> läuft
    Also zumindest hab ich nun (dank deiner Hilfe!) einen Weg wie ich es zum Laufen bringe.
    Aber irgendwie verunsichert mich das schon, ob Java oder Eclipse hier einen Bug hat, oder an meiner Programmierung etwas so schräg sein kann?
    (Das AVD kann ich als Fehlerquelle ausschließen, weil sich die apk am Handy auch gleich verhält.)

    Würd' mich interessieren, ob das an anderen Rechnern sich auch so verhält.

    Ich befürchte auch, dass ich das Verhalten nicht ignorieren darf, weil das View später nicht statisch an eine fixen Platz im XML-steht, sondern dynamisch irgendwo erstellt wird. (Aber vielleicht entsteht bei der dynamischen Erstellung das Problem gar nicht? später mal sehen).
     
  4. Tom299, 03.05.2012 #4
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Sieht wohl so aus, als würde deine R-Klasse nicht aktualisiert / neu gebaut werden. Deswegen kommt dann auch der ClassCastException.

    Wird bei dir immer neu gebaut, wenn du abspeicherst? Oder hast du Build Automatically deaktiviert? Manchmal gehts auch nicht ohne Clear, aber das hat Swordi ja schon geschrieben.
     
  5. AquaBall, 03.05.2012 #5
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    An der R-Classe hab ich natürlich nichts geschraubt. Würd ich nie wagen.
    Und Build Automatically hab ich auch nicht verstellt. (wüsste gar nicht wo).

    Es laufen ja auch alle anderen Projekte problemlos.
     

Diese Seite empfehlen