Anzeige laufende App

  • 84 Antworten
  • Letztes Antwortdatum
Status
Dieses Thema wurde gelöst! Zur Lösung springen…
D

Data2006

Ambitioniertes Mitglied
0
Hallo zusammen,

ich hätte hier noch was Neues. Und zwar ich habe eine App mit der Projektvorlage Empty Views Activity mit Java angelegt.
Die App wurde auf Handy installiert und läuft auch.
Nur wird oben der Name der App nicht angezeigt. Ist das ein Fehler?
Ich habe dieses Video probiert bzw. bin noch dran:
Oder per Text: AE Android Kochbuch: Texte anzeigen u. eingeben, Buttons – IT Technology Texte – Unser Presse u. Info Center

Braucht Ihr mal MainActivity.java und/oder activity_main.xml?

Lieben Dank,
Heiko
 
Empfohlene Antwort(en)
Dann schau dir doch noch mal das Switch an was hast du da vergessen?
Ich sehen kein "case"
 
  • Danke
Reaktionen: Data2006 und swa00
Alle Antworten (84)
Ich habe bischen weitergemacht. Jetzt bekomme ich diese Fehler angezeigt:
1698445180441.png

Ich verstehe nicht was an private static EditText etName; falsch sein soll.

LG und gute Nacht,
Heiko
Beiträge automatisch zusammengeführt:

Ich weiß nicht wie, aber der Fehler ist weg. Dafür jetzt ein anderer Fehler:
1698446370058.png


Ich habe die Zeile public class... genauso wie im Video.

LG
Heiko
 
Zuletzt bearbeitet:
Moin.

Habe den "Fehler" gefunden. Der Fehler saß vor dem Laptop. Habe die Anleitung nicht richtig zu Ende gelesen.
Tja, wer lesen kann...

Dafür habe ich einen anderen Fehler:
1698490096949.png

Die Deklaration von gbName scheint nicht zu klappen:
1698490239727.png
 
Dann schau dir doch noch mal das Switch an was hast du da vergessen?
Ich sehen kein "case"
 
  • Danke
Reaktionen: Data2006 und swa00
Oh man. Das darf nicht wahr sein. switch case hatte ich bei VB(A), C/C++ und evtl. auch schon bei Unix Programmierung gehabt. SCO Unix aber schon über 20 Jahre her. Das case hätte ich nicht vergessen dürfen. Das tut schon weh.

LG Heiko
 
Hau mal bitte deine "static" raus - wer hat dir das denn beigebracht ? :)

"static" ist NICHT äquivalent mit einer globalen variablen wie unter z.b. C gleichzusetzen
Wenn du dich darauf verlässt , kann dir der GarbageCollector die Variable unter dem Hintern wegziehen .
Overview of memory management | App quality | Android Developers

Wenn du das dennoch so machen möchtest, musst du explizit auf den LifeCycle reagieren.
The activity lifecycle | Android Developers

Für "statische" Variablen benutzt man i.d.R. eine SingleTon Klasse
How to use singleton class in android?
 
Zuletzt bearbeitet:
Habe case geschrieben, komme trotzdem nicht weiter:
1698502683228.png
Was ist nun schon wieder los?

LG Heiko
 
Es wäre schön , wenn du in Zukunft die gesamte Fehlermeldung des Complier präsentierst .
Wir können hier nicht in deinem screenshot "scrollen" - noch ist unsere Kristallkugel leistungsstark .


Komm mal BITTE runter und trink einen Tee - du hast vllt. eine Hektik drauf ..... aber echt lieber Heiko ..... :)
Sooooooo wird das nichts :)

Hast du denn auch diese id im layout vergeben ?
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Data2006
@swa00
schau das Video aus Post #1 dann weist wo das static her kommt.
 
Zuletzt bearbeitet:
Guten Abend.

Hier die Screenshots:
1698516169313.png
1698516286606.png

1698516374957.png

Und der Button:
1698516451496.png

Ich glaube da stimmt was mit R.id.buttonName nicht. Gebe ich R.id.bu ein, kann ich über Autovervollständigen kein buttonName auswählen.

LG
Heiko
Beiträge automatisch zusammengeführt:

Bzw.:
1698516922074.png

Ich kann kein id auswählen.

LG
Heiko
 

Anhänge

  • 1698516719560.png
    1698516719560.png
    135,5 KB · Aufrufe: 80
  • 1698516746805.png
    1698516746805.png
    135,5 KB · Aufrufe: 82
Zuletzt bearbeitet:
mache doch mal Rebuild.
 
  • Danke
Reaktionen: Data2006
Habe mal Menü Build/Rebuild Project gemacht. Hat nix gebracht. Der findet nach R. das id nicht:
1698519104270.png

LG Heiko
 
@Data2006

Hat nix gebracht. Der findet nach R. das id nicht:


Heiko, du solltest auch alle Hinweise des Compilers beachten.

Alleine schon deshalb, da du eine neuere Version des Gradles & Bibliotheken benutzt, als im Video verwendet wird.
Daher musst Du peinlichst darauf achten , was Dieser dir mitteilt, das tut er auch gut und ist absolut korrekt.

Hier dein eigener Screenshot :
1698565789326.png
Er gibt Dir hier schon den Lösungsansatz, die Begründung und die Zeilen gleich kostenlos mit hinzu.
Alleine hier schon 9 x mehr oder minder relevante Hinweise. Der Letzte ist schon mal zwingend zu beachten.


ABER :
Ich würde eh von diesem übergeordneten OnClick Stil absehen und daher am besten der ermittelten Instanz den ClickListener direkt zuordnen. Das ist zwar mehr code , aber bei Weiterm effizienter und nicht so anfällig.
Insbesondere bei komplexeren Anwendungen.

Code:
btName.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
             //  Todo
            }
        });
Die Vererbung des Clicklisteners aus der Main dann herausnehmen

Daher :
Videos nur als Anhaltspunkt nehmen , niemals - und ich betone niemals - 1:1 umsetzen .
Täglich gibt es Änderungen, die ein Video nicht berücksichtigen kann.


Für den aktuellen Stand gibt es dafür die offizielle "lebende" API Dokumentation
Quasi das tägliche "Gebetsbuch" für jeden Entwickler.
Android API reference | Android Developers


Und hier für die Einsteiger die Basics :
Create your first Android app | Get started | Android Developers
 
Zuletzt bearbeitet:
Hallo alles schön und gut was über static und Clicklisterner gesagt wurde .

Stelle dein Projekt um auf eine älterer Gradle Version du wirst > 8.0 haben benutze 7.5.

1698580485103.png
 
@jogimuc

Soll er u.U. in 3 Wochen sein Projekt nicht mehr compilieren können ?
Sorry, das ist das Unproduktivste was jetzt hier angeraten wurde.

Ab dem 01.12.23 und die Umstellung aller Bibliotheken auf api34, ist Gradle 7.5 nicht mehr benutzbar.
Gradle | Releases
Schließlich liegen zwischen 7.5 und 8.4 16 Versionen.
 
Zuletzt bearbeitet:
Moin zusammen.

Vielen Dank für die Antworten.

Ich bin ja noch am Lernen. Dachte nicht daß das so kompliziert werden würde. Das ist doch nur ein simples Progrämmchen.

Habe es probiert. Aber ging auch nicht. AS stößt sich am R.id:
1698613671847.png

1698613954055.png
1698614083897.png

Sorry, aber mit den Fehlermeldungen kann ich nix mit anfangen.Obwohl, bei Problems habe ich ja nur eine Fehlermeldung, das andere sind doch nur Warnungen. Oder sehe ich das falsch?

LG
Heiko
 
das andere sind doch nur Warnungen. Oder sehe ich das falsch?

Ja, siehst du falsch, denn die letzte Warnung bezieht sich auf dein error (Zeile 38) -
Also genau der Hinweis , was dein Error ausgelöst hat - Warum also nicht beachten ?

Und wenn sie dir nichts sagen, dann kannst du auch in Zukunft keine Lösung dazu finden .
Auch die anderen Warnungen werden dir ein wenig später auf die Füsse fallen, wenn du sie ignorierst.

Aktuelle Warnung : Dieser Stil kann nicht mehr angewendet werden - Eine non-final Resourcen-Id kann nicht mehr in einem switch/ case angewendet werden.

Die beste Lösung dazu habe ich dir oben schon unterbreitet - weshalb ich mich jetzt doch frage, warum du diese nicht genommen hast und krampfhaft versuchst es dennoch "hinzubekommen" .


Das ist doch nur ein simples Progrämmchen.
Ich übe diesen Beruf nun seit einigen Jahrzehnten hauptberuflich aus und kann nur dazu berichten , dass die AndroidProgrammierung mittlerweile zu einer der umfangreichsten Projekten überhaupt gehört.

Die Vielzahl der auf dem Markt befindlichen Hardware/Software Kombinationen ( derzeit 18000 ) macht es unerlässlich,
sich sehr intensiv mit der Thematik auseinander zu setzen.

Das ist was ganz Anderes , als einen Daemon in C für eine Debian-Büchse zu schreiben .
 
  • Danke
Reaktionen: Data2006
Na, ich habe doch den Code von oben eingegeben. Ich weiß auch nicht was eine non-final Resourcen-Id ist.
OK R.id.buttonName kann ich bei case nicht mehr verwenden. So weit, so gut. Kann ich denn das R.id.buttonName nicht einer neuen Variablen zuordnen und diese dann bei case verwenden?
Wie müßte mein Beispiel in der Mainactivity.java denn aussehen? Würde es was bringen meine ganze Datei zu posten?

Bei den Warnungen steht z. B. das meine Variablen zu lokalen Variablen umgewandelt werden können. Nur wozu? Wenn ich Variablen in Funktionen/Methoden lokal deklariere, dann stehen die mir doch in anderen Funktionen/Methoden nicht zur Verfügung. Oder habe ich auch das falsch verstanden?

Wie und wo kann ich das Androidprogrammieren denn lernen? Ich dachte auch immer neuere Programmversionen (von Android Studio & Co.) wären abwärtskompatibel?!

gradle.org habe mir mal von Google übersetzen lassen. Mein Win 10 (Eingabeaufforderung) kennt den gradle -v Befehl gar nicht. Java konnte ich mir anzeigen lassen. Ich dachte bei AS-Installation wäre das Gradle mit installiert?!

LG und gute Nacht,
Heiko
Beiträge automatisch zusammengeführt:

jogimuc schrieb:
Hallo alles schön und gut was über static und Clicklisterner gesagt wurde .

Stelle dein Projekt um auf eine älterer Gradle Version du wirst > 8.0 haben benutze 7.5.

Anhang anzeigen 1135114
Ja, ich habe 8.0. Habe mal das 7.5 ausprobiert. Da kamen auch Fehlermeldungen. Das Android Gradle Plugin steht auf Version 8.1.2. Das kann ich auch nicht ändern. Habe jetzt wieder auf Gradle 8.0 zurückgestellt.

LG
Heiko
 
Zuletzt bearbeitet:
Wenn dann mindestens das plugin auf 7.4.
Aber du weißt die einwende von swa00.

Gradle Plugin steht auf Version 8.1.2. Das kann ich auch nicht ändern. Habe jetzt wieder auf Gradle 8.0 zurückgestellt.
Doch könntest du recht daneben den kleinen Button klicken.
 
Zuletzt bearbeitet:
Kann ich denn das R.id.buttonName nicht einer neuen Variablen zuordnen und diese dann bei case verwenden?
Warum sollte nach einer Zuweisung gleichen Typs einer ID plötzlich ein veralteter Programstil wieder verfügbar sein ?
Kein Bonbon für ein Kind vor dem Mittagessen bedeutet kein Bonbon - egal ob Erdbeer oder Zitrone.


Ich dachte auch immer neuere Programmversionen (von Android Studio & Co.) wären abwärtskompatibel?!
Bedingt, dass musst du als Entwickler durch Einstellungen im Gradle und durch Programmanweisungen im Source bestimmen.
Das ist kein Automatismus.

Ich könnte jetzt an dieser Stelle 100 Beispiele nennen, die alleine heute von Dir als Entwickler berücksichtigt werden müssen. Da ist es sehr wichtig, exakt vorzugehen.

- Es gibt Funktionen & Bibliotheken, die schlichtweg nicht auf allen Geräten laufen - die musst du abfangen.
- Es gibt Funktionen, die du nicht zur Verfügung stellen darfst, aber ab Android (x)schon.
- Es gibt Funktionen , die du nur bis Android (x)einbetten darfst , aber ab Andropid (x)+n nicht mehr
- Es gibt Sicherheitsanforderungen / Runntime-Abfragen, die ab Android (x) unerlässlich sind und die Genehmigung des Nutzers voraussetzen - aber darunter wieder nicht.

Usw usw ......


Aber das ist hier nicht der Punkt :

Damit dein Projekt überhaupt umgesetzt werden kann , musst Du die Werkzeuge von heute anwenden.
Sonst mag deine Entwicklerumgebung dies nicht und Google erst recht nicht . (Richtlinien)
Und alleine da bist du noch nicht angekommen.

Und irgendwie habe ich das Gefühl, dass du das noch nicht einsiehst.
Es gibt kein "Aber, Aber" und es gibt auch kein Workaround - es gibt Vorgaben an die man sich halten muss - PUNKT.

Erst wenn du da angekommen bist, macht es Sinn, über Abwärtskompatibilität nachzudenken.
Noch ein langer Weg bis dorthin.


Mein Win 10 (Eingabeaufforderung) kennt den gradle -v Befehl gar nicht
Gradle ist auch kein Programm , sondern ein eingebettetes Build System , welches den Compilierungsprozess automatisiert. Vereinfacht : eine Script-Language , welches dir das Zielpaket zusammenstellt.

Bei den Warnungen steht z. B. das meine Variablen zu lokalen Variablen umgewandelt werden können. Nur wozu? Wenn ich Variablen in Funktionen/Methoden lokal deklariere, dann stehen die mir doch in anderen Funktionen/Methoden nicht zur Verfügung. Oder habe ich auch das falsch verstanden?
Ja leider auch, denn eine AndroidApp ist ein Multithreadsystem und äusserts "penibel" im Speichermanagement.
Da ist es unerlässlich, nicht unnötig Memory zu allociieren , wenn er nicht benötigt wird.
Denn die Summe solcher "Fehltritte" kann die App sehr schnell unstabil machen , der zu unerwünschten Abstürzen führt, die du auch mit einem Try / catch nicht mehr in den Griff bekommst .

Daher zurecht die Warnung des Systems - das hat durchaus seine Begründung.
Zumal dieser Hinweis eher eine ganz normale OOP Warnung ist -
Warum in einer Klasse eine verwendete lokale Variable versuchen global zu deklarieren ? Macht doch keinen Sinn .

In dem Zusammenhang möchte ich nochmals mein bereits oben eingelegtes "Veto" der statisch deklarierten Variable
in Erinnerung bringen. Das hatte auch seine Berechtigung.


Persönliche Anmerkung:

Ich weis , du möchtest Lernen , dafür stehe ich auch sehr gerne zur Verfügung.
Allerdings wird es jetzt langsam mühsam immer wieder ellenlange Texte zu verfassen und dir das System ansich zu erklären.
Insbesondere die umfangreichen Antworten auf deine "Aber Aber" , weil du das essentielle an Antworten nicht selbst nochmal recherchierst und auch mit dem Kopfe durch die Wand willst, weil das Video was Anderes sagt.
(Bsp. switch/case - daran hälst du dich jetzt zwei Tage fest - was für ein Quatsch - es geht nicht mehr - PUNKT)
Wenn du ordentlich Praxiserfahrung hast , ist man vllt. in der Lage, eine WrapperKlasse zu erstellen.

Ein Forum kann keinen Grundlehrgang in der Programmierung und dem verwendeten System bieten.
In der Zeit, wie ich hier Antworten verfasse, hätte ich schon das nächste Projekt weiterführen können .
Also die Wurst für meinen Kühlschrank.

Und dann ist mir leider Aufgefallen , dass du offensichtlich einige Probleme mit der englischen Sprache hast .
Ohne fundierte Englisch-Kenntnisse ist es nicht möglich, eine vernünftige App herzustellen .

Als Basis fehlt dir auch das Verständnis der Grund-Funktionsweise des Systems .
Ich persönlich könnte kein Stück Software für ein System erstellen, welches ich nicht kenne.

Es ist leider - wie schon weiter oben angemerkt -. nicht nur ein Stück Software ("Progrämmchen") mit netten Buttons.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Paratrooper
Status
Dieses Thema wurde gelöst! Zur Lösung springen…

Ähnliche Themen

K
  • Klax124
Antworten
2
Aufrufe
322
swa00
swa00
Manny87
  • Manny87
Antworten
11
Aufrufe
408
swa00
swa00
E
Antworten
25
Aufrufe
1.638
evgkop
E
Zurück
Oben Unten