try – Teil aus try/catch wird nicht ausgeführt

  • Antworten:16
Georg C.
  • Forum-Beiträge: 235

02.01.2021, 19:07:34 via Website

Hallo,
zuerst möchte ich ein frohes neues Jahr wünschen.
Bin mit dem AS langsam befreundet, jedoch wende mich an Euch wieder mit große Bitte.
Endlich kann ich eine Signierte App erstellen und die auf meinem Smartphone testen.
Bei dem AS- Emulator funktioniert alles wie gewollt. Auf dem Handy jedoch nicht.
Alles ist simple einfach.
Es werden zwei Zahlen aus den EditText abgefragt, und in der Rechnen_Methode ausgerechnet
Habe mir als Debug die Toast Meldungen angebracht- Code:

    public void Rechnen_Methode(View view) {

        double stanz = 0;
        double getrocknet = 0;
        double brennschwindung = 4.7; 
        double gesamtschwindung = 0;
        double tr_schwindung = 0.0;
        double endmass = 0.0;

        EditText stanzmass = (EditText) findViewById(R.id.editStanzmass);
        EditText schwind = (EditText) findViewById(R.id.editSchwindung);
        TextView error = (TextView) findViewById(R.id.textError);
        TextView ergeb = (TextView) findViewById(R.id.textErgeb);

        Toast.makeText(MainActivity.this, "Re_Meth", Toast.LENGTH_LONG).show();



        try {

            Toast.makeText(MainActivity.this, "try", Toast.LENGTH_LONG).show();

            //Hier wird die brennschwindung mit dem Wert der Massen
            // Weis, Grau, Schwarz aktualisiert (überschrieben)
            brennschwindung = massenFaktor;

            tr_schwindung = Double.parseDouble(schwind.getText().toString());
            stanz = Double.parseDouble(stanzmass.getText().toString());


            gesamtschwindung = tr_schwindung + brennschwindung;
            endmass = stanz - ((gesamtschwindung / 100) * stanz);


            ergeb.setText("" + Double.parseDouble(String.format("%1.1f", endmass)) + " mm");

            error.setText("\n\n Das Endmass (ca.): ");

            Toast.makeText(MainActivity.this, "Tr_sch " + tr_schwindung, Toast.LENGTH_LONG).show();

            //Toast.makeText(MainActivity.this, "", Toast.LENGTH_LONG).show();
        }catch (NumberFormatException e) {

            Toast.makeText(MainActivity.this, "catch", Toast.LENGTH_LONG).show();

            error.setText("FEHLER: \n\n Stanzmass im Format xxx oder xxx.x eingeben also z.B.: 317 oder 317.5"
                    + "\n\n Schwindung im Format x oder x.x eingeben also z.B.: 3 oder 3.2");

           }
    }

....

<EditText
        android:id="@+id/editSchwindung"
        android:layout_width="100dp"
        android:layout_height="54dp"
        android:ems="10"
        android:inputType="number|numberDecimal"
...

Wenn ich das Button tippe, der die Rechnen_Methode aufruft, so bekomme ich am Handy
Die Re_Meth und die catch (Toast) Ausgaben. Der try – Teil wird nicht ausgeführt.
Im AS Emulator jedoch ja. Bitte um Hilfe.

Viele Grüße Georg

Sorry für Gramatik & Stilistik Fehler.

Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

02.01.2021, 20:52:11 via Website

Das ist eben der Sinn von try/catch.

Sobald innerhalb des TRY Blocks ein Fehler auftritt wird der try Block verlassen und der Catch Block mit Fehlerinformationen aufgerufen.
Diese Fehlerinformationen sind wichtig um den Fehler zu finden:

catch(Exception e){
e.printStackTrace()
}

Am besten das Handy per USB Debugging über AS die App starten und dan LogCat/Log anschauen und hier die Exception posten.

Ich tippe auf ein Fehler beim parsen.

Tipp: Das ist nicht sinvoll:
ergeb.setText("" + Double.parseDouble(String.format("%1.1f", endmass)) + " mm");

lieber sowas:
ergeb.setText(String.format("%1.1f", endmass) + " mm");
Du willst doch nicht deine Zahl formatieren und dann wieder in eine Zahl konvertieren.

Bitte am besten Exception Log mit deinen Werten die du eingegeben hast.
Kann auch an Punk/Komma liegen, das das jeweils andere erwartet wird. Probier es mal aus, falls der Emulator auf US und dein Gerät auf DE steht.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Georg C.
Kommentieren
Georg C.
  • Forum-Beiträge: 235

03.01.2021, 19:34:10 via Website

Hallo,
danke für die Infos. Mit e.printStackTrace() habe ich herausgefunden auf welche Exception ich den Codeausschnitt schützen soll. -> NumberFormatException.
Und ich vermute auch das es am Fehler beim parsen sich handelt.
Habe auch Dein Tipp gefolgt und auf;
ergeb.setText(String.format("%1.1f", endmass) + " mm");
geändert.
Nun damals wie auch heute werden KEINE Fehler oder Warnungen generiert.
Auf dem Rechner (AS + Emulator) funktioniert alles prima. Nun auf dem Handy nicht.

Weiterhin kann ich nicht testen, weil auf einmal das IDE mir keine Signierte App generieren kann. Fehler:
Generate Signed APK: Errors while building APK. You can find the errors in the 'Messages' view.

*Entry name 'META-INF/androidx.vectordrawable_vectordrawable.version' collided*
Habe im Net etwas recherchiert …
Click on Build -> Clean Project
Click on File -> Invalidate Caches / Restart

Bring jedoch keine Ergebnisse.
Ich kämpfe weiter.
Nochmals danke und Gruß Georg

Sorry für Gramatik & Stilistik Fehler.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.01.2021, 21:48:39 via Website

Du brauchst auch keine Signed APK.
Einfach per USB Debugging im Debug Modus die App direkt auf dem Gerät starten.
Dann solltest du auch eine Fehlermeldung sehen:
https://developer.android.com/studio/run/device

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Georg C.
Kommentieren
Georg C.
  • Forum-Beiträge: 235

03.01.2021, 22:34:22 via Website

Danke.
Ich melde mich noch morgen.

Sorry für Gramatik & Stilistik Fehler.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

04.01.2021, 08:16:09 via Website

Hallo der Fehler wird wohl in einer dieser beiden Zeilen entstehen.

tr_schwindung = Double.parseDouble(schwind.getText().toString());
stanz = Double.parseDouble(stanzmass.getText().toString());

beim Kompilieren wirst du keinen Fehler bekommen immer erst zur Laufzeit , und zwar dann wenn die Eingabe im Edittext nicht dem Zahlenformat von "double" entspricht.

Wenn du jetzt zb keine Zahl Eingibst oder das deutsche Komma und nicht den Punkt benutzt wird das Parsen schief gehen. Willst du bei der Eingabe das Komma benutzen musst du das abfangen und selber umwandeln das macht die Pars Methode nicht. Die erwartet einen Punk in dem Eingabe String.

Teste es mal mit einer ganzen Zahl ohne Komma bei der Eingabe.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

04.01.2021, 08:21:36 via Website

Ps. auch Trennzeichen (Tausender) sind nicht erlaubt.

Frage welchen "InputType" hast du beim EditText angegeben?

Tipp: "TYPE_NUMBER_FLAG_DECIMAL" wird im deutschen offt ärger machen.
da es das Komma annimmt aber nicht in den "Punkt" umsetzt das musst du dann selber machen.
Besser nicht benutzen.

oder
tr_schwindung = Double.parseDouble(schwind.getText().toString().replace(',', '.'));
stanz = Double.parseDouble(stanzmass.getText().toString().replace(',', '.'));

— geändert am 04.01.2021, 09:26:02

Hilfreich?
Kommentieren
Georg C.
  • Forum-Beiträge: 235

04.01.2021, 18:06:59 via Website

Hallo,
mein Handy kann ich als Debug nicht benutzen, weil ich die A Android Debug Bridge nicht installieren kann. Sehe Bilde. Keine Ahnung wie ich es umgehen kann?

Weiterhin ich möchte nicht ich will meine App auf meinem Handy installieren, weil es ein Hilfe- Tools für meine Arbeit ist. Und installieren kann ich nur Signierte App – oder?
Die App habe ich schon einmal von Neu (habe das Problem schon eben einmal gehabt) geschrieben. Obwohl geplante Erweiterungen noch kommen, habe langsam keine Lust es permanent zu wiederholen.

Also bin “im Eimer“!

Habe mich so gefreut wieder sich der “App Welt“ widmen, und passiert sowas. In der Eclipse ging es alles -> so einfacher.

Ich gehe nicht davon aus, dass mir jemand hierbei Helfen kann, daher letzte Frage:
Wie kann ich mein Projekt “Stufen massig“ speichern oder Sichern? Also z.B.: Projekt XXX_Vers1, … XXX_Vers2, … XXX_Vers13. Oder muss ich immer alles Manuell (ganzes Projekt Ordner) mir sichern?

Gruß Georg

@Jokel,
Ja das mit dem Parsen (String zu Double Double zu String) war mir von Anfang an etwas suspekt. Muss aber mit wenigstens 1 Stelle hinter dem Koma rechnen (Ausrechnen) und Float hat irgendwie nicht Funktioniert. Ich probiere Deinen Vorschlag aus.
Nun erstmal muss ich (vermute) wieder alles von Anfang … brrryyyyy machen.

Danke Euch beiden

image
image
image

Sorry für Gramatik & Stilistik Fehler.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

04.01.2021, 18:37:56 via Website

Du hast hier das MTP Gerät also den Speicher. Das ist was ganz anderes als "Debug".

DIe Android Debug Bridge (ADB) ist bei Androis Studio dabei, da musst du nichts installieren.
I.d.r schließt du das Gerät per USB an, aktiviert (am Gerät in den Entwickleroptionen) das USB Debugging, lässt das Gerä(PC) zu, dabei muss dein Handy entsperrt sein.
https://mobilsicher.de/ratgeber/usb-debugging-aktivieren

Anschließend solltest du in AS das Gerät als DebugDevice auswählen können. Dann kannst du die App Starten ohne immer einen Signierten Build machen zu müssen.

Für die Versionen Nutze GIT evtl mit GUI Git Kreken oder TortoiseGit etc.

Wieso solltest du neu anfangen müssen? Das macht keinen Unterschied....

PS: Für mich sieht es etwas so aus, als fehlen dir einige Java Grundlagen.
I.d.r. ist es besser Java zu beherrschen (dann sind String PArsing zu Double oder Double zu String) kein Problem und du kannst dich mehr den Android Eigenheiten widmen ohne dass dir der Code komplett fremd ist. Mache es schrittweise und ja es braucht Zeit, eine App ist nicht was was eben schnell mal geht, wenn man keine Routine darin hat,

— geändert am 04.01.2021, 18:48:04

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Jokel
Kommentieren
Georg C.
  • Forum-Beiträge: 235

04.01.2021, 21:08:55 via Website

Hallo,
was meine Java Grundlagen betrifft, werde mich freuen, wenn ich nur die Hälfte von dir , … oder den “alten Hasen“ hier besitzen werde. Bin SGD- Darmstadt Java Programmierer Absolvent (2000-2002 mit gesamt Note gut). Da waren die Java 1.3 Zeiten - 
War danach ca. 7 Jahre relativ in Java aktiv, naher immer weiniger … und erst seit über 10 Jahren möchte wieder paar App´s progen. Ich werde sagen meine Java Grundlagen reichen für die paar “primitive“ App´s was ich vor habe, das Problem ist AS IDE und Gradle- System.

Ja – da muss ich noch viel Arbeiten. (Schade, dass Eclypse und NetBeans raus sind - NetBeans hat einen sehr guten Event handler bei der Grafischen Komponenten Einfügung.)

Mein Problem:
1)- Ich bekomme (nach 3 YouTube Videos, zig Anleitungen, 3 Büchern) das Handy nicht in die AS integriert.

2)- Möchte – will! meine App´s auf meinem Handy installieren. (So wie ich damals es zig mal problemlos gemacht habe). Dafür brauche ich die Signierte App. Oder habe was falsch verstanden?

Bitte den “Opa“ nicht falsch interpretieren, was AS betrifft, bin am Lernen. Sollte ich bei Euch etwas zusätzliche Unterstützung bei bekommen, werde ich mich sehr freuen.

Gruß Georg
image
imageimageimage

Sorry für Gramatik & Stilistik Fehler.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

04.01.2021, 21:43:29 via Website

Oben in der Lleiste vor dem "start"/"play" Button steht Nexus 4. Das ist dein EMulator.
Kannst du da was anderes auswählen z.b. dein Gerät wenn es per USB angeschlossen ist?
Bei mir taucht es genau da auf und da muss ich es auch auswählen.

Mehr muss ich nicht machen um die App auf mein Gerät zu bringen.
Signed APK/Apps brauchst du erst später, wenn du diese auf mehreren Geräten oder dem PlayStore haben willst. Also vergiss das erstmal.

Schau mal was du in der Leiste auswählen kannst

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

04.01.2021, 21:47:31 via Website

Ja du hast etwas falsch verstanden.

Um die app auf dem Handy zu testen debuggen. Brauchst du nicht unbedingt eine signed apk.
Du kannst sie wenn dein Handy im as angezeigt wird auch da debuggen.

Hast du auch die USB Treiber im as installiert. Und dein USB debugging am Handy activ. Wie das geht hat dir Pascal schon erklärt. Llp

Wird das Handy nicht im Studio angezeigt .

Hast du noch die Möglichkeit eiene nicht signierte debugg apk zu erstellen.
Die apk ist dann mit einen default key signiert.
Wichtig ist aber immer vorher die app auf den handy zu löschen bevor du versuchst eine neue apk zu testen.

Frage hast du irgentwan mal deine USB Einstellung deines Handy,s verändert wenn ja stelle den Standart wider her.
Und activire das usbdebugging. Dann soltte es im as sichtbar sein. Ansonsten stimmt mit deinem AS was nicht.

— geändert am 04.01.2021, 22:02:26

Hilfreich?
Kommentieren
Georg C.
  • Forum-Beiträge: 235

04.01.2021, 22:05:32 via Website

Es ist mir erst jetzt eingefallen, dass ich das Handy am USB3 angeschlossen habe. USB2 sollte vielleicht besser dafür geeignet () Versuche morgen.

@Jokel

Hast du auch die USB Treiber im as installiert. Und dein USB debugging
am Handy activ.

2 mall –JA. Ja USB Treiber ist im AS installiert und gebugg am Handy – sehe bilde ist Aktiv.
Das Handy wird im Studio nicht angezeigt erkannt – aber ich versuche (macht sin?) das am USB2 Anschließen

Hast du noch die Möglichkeit eiene nicht signierte debugg apk zu
erstellen.Die apk ist dann mit einen default key signiert.

Ja das geht. Ich versuche Morgen mit USB2
DANKE!

@Pascal

Oben in der Lleiste vor dem "start"/"play" Button steht Nexus 4. Das
ist dein EMulator. Kannst du da was anderes auswählen z.b. dein Gerät
wenn es per USB angeschlossen ist? Bei mir taucht es genau da auf und
da muss ich es auch auswählen.

Hätte mein Handy dort auftauchen sollten, werden meine Fragen überflüssig.
Nein, dort tauchen nur die Emulatoren. Das AS habe schon einmal de/ und neu Installiert.
Aber ich vermute mein Fehler ist das USB- Port. Probiere morgen am USB2
DANKE DANKE! Euch

— geändert am 04.01.2021, 22:19:29

Sorry für Gramatik & Stilistik Fehler.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

04.01.2021, 22:12:13 via Website

Wenn es nicht erkannt wird USB abstecken und im Handy auch das autorisierten löschen neu an USB anschließen Und die autorisierung wider bestätigen. Kommt keine Abfrage nach der autorisierung hast du schon ein Problem.

Hoffe deine Einstellungen sind gleich. Zu meinen.
Ich habe sie auf Standart gelassen. Hoffe du auch.

image

image

— geändert am 04.01.2021, 22:24:54

Hilfreich?
Georg C.Pascal P.
Kommentieren
Georg C.
  • Forum-Beiträge: 235

05.01.2021, 18:23:09 via Website

Hallo Jokel,

Wenn es nicht erkannt wird USB abstecken und im Handy auch das
autorisierten löschen neu an USB anschließen Und die autorisierung
wider bestätigen.

Ja das habe auch schon paar mall gemacht, jedoch ohne Erfolg.

Hoffe deine Einstellungen sind gleich. Zu meinen.

Nicht so ganz, aber etwas ähnlich. So weit bin in den (im Etwickleroptionen) Einstellungen nicht gewesen, aber im Etwickleroptionen/Netzwerk/USB-Konfigurationen habe USB Ethernet ausgewählt. Waren Media Transfer ausgewählt. – egal – Jetzt nach paar hin und her habe geschafft.
ES FUNKTIONIERT.

Leute ihr kann sich NICHT!!! Vorstellen wie ich mich freue.

Die App ist auf dem Handy, und ich kann meine App “zum Laufzeit“ auf der Hardware testen wie auch weiterentwickeln. Dass mit der SGD- Java Programmierer klingt etwas “Professionell“ ??? – Ich bin und betrachte meine Wenigkeit als Hobby Programmierer; bzw. ab Java1.3 bis heute herrscht Lichtjahren Entfernung.
Aber FAZIT:

Ohne Euch (in besonderen Jakel) hätte ich es nicht geschafft.
VIELEN DANK für Eure mühe und Geduld mit mir.
SUPER (wie schon auch damals [ androidpit - (cool) ]) Forum.
Gruß Georg

Sorry für Gramatik & Stilistik Fehler.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.530

05.01.2021, 18:28:34 via Website

Hier noch zwei bilder wie es ausschaut wenn sich das Handy mit AS vebunden ist.

Handy ist verbunden.
image

und hier wie die Frage nach der nach der Autorisierung ausschaut.
image

— geändert am 05.01.2021, 18:29:49

Hilfreich?
Kommentieren
Georg C.
  • Forum-Beiträge: 235

05.01.2021, 19:13:59 via Website

genau das habe ich auch bekommen, und Haken auf (damit es so bleibt!) auf:
Von diesem Computer immer zulassen
gemacht
Danke

Sorry für Gramatik & Stilistik Fehler.

Hilfreich?
Kommentieren