Beiträge von nono124

    Hallo
    In den geposteten Code und deiner App benutzt du lokale Variablen für die Spinner.
    Besser ist es für die Spinner Klassen Variablen zu benutzen und diese in der onCreate zu setzen.
    Denn du willst in den Listener „Callback Methode“ darauf zugreifen was aber, weil es lokale Variablen sind nicht geht.



    Wenn du nicht weist was lokale und Klassen Variablen sind schlage in den Grundlagen Java nach. Nur learning by doing kommst du nicht weit. Elementare Java Grundlagen solltest du schon haben und Beherrschen.



    Zweitens solltest du für alle Spinner nur einen eigenen Listener machen und benutzen.
    Ich sage mal default Listener, den du wegen dem Interfase einbinden musst lasse frei. Oder lasse sogar das Interface bei der Klasse weg. "implements OnItemSelectedListener" dann kannst du den default auch löschen.
    Auch darfst du nicht den Listener zwei mal setzen.


    etwas aus deiner App

    Code
    spinner3.setOnItemSelectedListener(this);        // löschen
    spinner3.setOnItemSelectedListener(new OnItemSelectedListener() {  
              String[] stringBlende = MainActivity.this.getResources().getStringArray(C0694R.array.blende_arrays);
    
    
                public void onNothingSelected(AdapterView<?> adapterView) {            }
                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long j) {
    .....

    die Zeile mit dem „this“ löschen brauchst du nicht.
    auch bei den andern löschen.




    so du willst also in einen Listener „Callback Methode“ einen anderen Spinner auf einen anderen wert setzen. Da zu brauchst du die variable des Spinners die du nicht hast weil sie lokal sind und nicht global eigentlich gibt es keine echten globalen Variablen bei Java nur Klassen Variablen, die auch in der Klasse global sind.


    Das kannst du mit spinner5.setSelectio(pos); machen.



    https://stackoverflow.com/ques…sition-in-spinner/8769522



    du solltest auch hier den erste Start des listener überspringen so wie bei Spinner3.

    Beschreibe doch mal wo das Problem bei deinen zuerst gepostet Code ist.



    Zitat

    Ich möchte nun die Anzeige der ISO durch einen 2 Spinner verändern, ohne dass ich einen Button benutze um alles zu aktualisieren.

    Was genau willst du? Willst du das sich die items in dem zweiten ändern. Also je nachdem auf welches icon im ersten gekickt wird sollen sich die Element im zweiten ändern?

    Ja man kann denn Bytecode von java zum Teil decompiliren. Es gibt sogar online Webseiten dafür. Nur ist es nicht der echte Quellcode und er ist auch nicht lauffähig. Wenn dann nur mit viel Aufwand.


    Deshalb sollte man pw auch nie in lesbarer form im Code speichen. Nur als Tipp zu verstehen.

    Hallo habe es jetzt mal getestet und nachgelesen.


    Die View die du bekommst ist nicht die View von den Spinner sondern die View von den Item auf das du klickst.


    Eigentlich hätte dein erster Code gehen müssen tut er auch bei mir.


    Es ist auch so das der Listener auch beim App Start für jeden Spinner einmal aufgerufen wird.


    Somit werden beim Start der App auch die beiden Toaste am Ende des Listeners zweimal aus gegeben.


    Da der Listner beim Start der App zweimal durchlaufen wird. Natürlich stimmt die Ausgabe erst beim letzten durchlauf. Wenn die App gestartet ist sollte es passen.


    Er wird aber auch nur aufgerufen wen du etwas anderes anklickst als was gerade in den Spinner ausgewählt ist.Ich sehe hier kein Problem.


    Das musst du schon genauer beschreiben was du da für ein Problem siehst.




    PS.



    In deiner app hast du


    Vier Spinner die ersten drei setzt du auf den Default Listener „this“ den den das interface vorschreibt. Wenn do this angibst wird immer der benutzt.
    "spinner.setOnItemSelectedListener(this);"


    außer für den zweiten Spinner setzt du aber auch noch einen eignen Listener für die anderen drei.
    Somit weißt du in der Methode wer den Listener ausgelöst hat.
    Aber der default Listener wird auch von den anderen Spinnern aufgerufen.


    Spinner vier hat nur seinen eigenen Listener.
    1 und 3 haben zwei den default und den eigenen. Wiso das?


    Ja du hast den Code in dem default listener auf Kommentar also macht er nichts. Aber dein zweiter Spinner nach dadurch auch nichts.



    Also lösche den default bei 1, 2 und 3, und erstelle für den zweiten auch einen eigenen Listener.


    Zwei Listener auf eine Variable ist falsch führt immer zu Probleme.






    in Java bitte Klassen Groß und Varaiablen klein schreiben.

    Lib soll eine Bibliothek
    zb so was wie Retrofit. Oder andere oberflächen um das Design Layouts zu entwickeln.



    Was genau geht denn nicht? Wird denn einer der beiden if Zweige aufgerufen?
    Kommst du überhaupt in den if Block? . Hast du das mit den Debugger geprüft?


    Im übrigen finde ich es nicht sinnvoll zwei toast hindereinander zu machen da wird oft einer verschluckt.
    Wenn du wissen willst ob er in den if Block verzweigt benutze ein Log und prüfe das in der logcat.



    Log.d("Test", "Deine Wahl :" + countries[position]) ";

    Hallo wenn das stimmt wüsstest du auch wie ein spinner arbeitet.
    Da wirst du zumindestens einzelne Listener haben für jeden spinner einen.


    Für deine layouts hast du aber bestimmt eine Lib benutzt. Würden sonst anders aussehen und auch nicht so viele nicht benutzte liberys mit im Code
    sein.


    Aber zum Thema was machen den nun deine spinner?

    Zitat


    ich habe noch eine App im Store, den Fotospickzettel
    Diese App habe ich schon mit dem Android Editor geschrieben.


    Das glaube ich dir nicht ganz die ist bestimmt mit dem App Baukasten gemacht.
    Der Aufbau der APK , Layouts schauen mir nicht nach Nativen SDK mit Android Studio aus.
    Habe mir die APK von Google Play angesehen.
    Wie kommen für so eine einfache App 21MB zustande? doch nur duch eine Externe Lib.


    Finde auch hier das Querformat unpassend. Denn wenn ich mit meiner Kamera unterwegs bin und etwas nach schauen will, will ich mein Handy nicht erst rum drehen.


    Wenn du das im Studio mit Java gemacht hättest würdest du dicht die Frage nach den Spinnern stellen.

    So sollte es gehen.





    Zum dem Teil mit den Speicherbereichen.



    Erstens brauchst du Permissions um auf den externen Speicher zuzugreifen.
    Bis API 22 Reichte die im Manifest zu setzen.



    Ab API 23 musst du auch den User nach der Permission fragen.
    https://developer.android.com/…ng/permissions/requesting



    Ab API 28 kannst du auch nur noch mit Storage Access Framework (SAF). auf die Externe oder Interne SD Karte einen Vollzugriff erhalten.



    Ab API 29 kommt auch noch Sroped Storage hinzu.



    https://developer.android.com/preview/privacy/storage

    Im Moment leider nicht , coden ist am Handy schlecht.


    In der parent Variablen kommt immer der Adapter, in der v die View also der Spinner der den Listener auslöst, in der position die Position auf was du geklickt hast.


    Also deine Id ist wenn in der v Variablen und nicht in den parent.


    Und du hast immer nur eine View nicht beide.


    Wer den Listener auslöst prüft du genau so wie bei einen Clicklistener Button. Auf die richtige ID.


    Eigentlich müsste mit der Variablen id auch die ID des Listeners bekommen.

    Hallo zu deinem Problem mit dem spinnern. In dem listner bekommst du immer nur einen spinner und nicht beide. In dem parent ist immer nur der spinner auf den du geclickt hast.
    Es macht keinen Sinn die view beiden spinner Variablen zuzuweisen.
    Du must schon prüfen wer von den beiden Spinnern den Listener aufruft.


    In vorallen ist die Variable nicht ein Bezug auf die View und somit auf die id sondern ein Bezug auf den Adapter. Also auf das Array.

    Die meistens Tutorials die ich gefunden haben erklären Kotlin auf dem PC nicht Android.
    Die Eigenheiten von Android Framework werden somit nicht behandelt. Deshalb auch das mit der Main Funktion die in den Tutoriell vorkommt beim PC.
    Die meisten auf Android bezogen Tutorials sind immer noch in Java. Zu mindestens Video Tut.
    Gebe mir doch mal ein paar links von denen du gelernt hast.

    Wenn du die PDF Datei verstanden hast kannst du auch etwas Java. Java und Kotlin nicht so extrem verschieden.
    Auf jeden Fall ist es sinnvoll die Syntax von Java zu kennen um auch Beispiele Tutoriell die es momentan nur in Java gibt zu verstehen.
    Es ist ja auch möglich Java Kassen unter Kotlin weiter zu benutzen und da hilft ein gewisses Grund Verständnis schon.

    >Aber wenn man ein neues Projekt in AndroidStudio erstellt, wird automatisch eine Mainklasse erstellt.


    Du verwechselst hier etwas Klasse und die „main“ Methode, Prozedur oder auch Funktion wie sie in fast allen sprachen als StartPunkt genommen wird.


    Ja die erste Activity die das Studio erstellt heißt Main_Activty. Das ist aber nur der Name der Klasse kann auch anders heißen. Welche Activity beim klick auf das Icon im Homescreen gestartet wird in dem Manifest des Projektes festgelegt. Eine Methode die sich Main nennt gibt es nicht in Android.


    In Java oder Kotlin schon nur wird die hier nicht gebraucht sagte ich bereits.


    HTML, SQL sind eigentlich keine Programmierer Sprachen .


    >C hatte ich mir auch mal angeschaut, aber das war noch zu einer Zeit, als man noch 2 A4-Seiten schreiben musste um ein einfaches Fenster zu öffnen.


    Das siehst du ach wieder den Vorteil der OOP also alles in Klassen zu kapseln und dort auch schon alles mit Default Einstellung zu belegen. Dann brauchst du nur ein Objekt dieser Kasse erstellen und es benutzen. Du hast eine Ref. (Instanz) des Objektes und greift dann einfach darauf zu.


    Ständige Wiederholungen würde ich über Zeitschleifen, Timer und Threads lösen. Bedenke das das du den UI Thread nicht anhalten solltest denn sonst gibt es eine ANR.


    https://developer.android.com/topic/performance/vitals/anr


    Ereignisse werden über Intenss in Android gehandelt die du mit Listner (callback Fiktionen) abfangen kannst und dort deine Code aus führen kannst.


    Das Event Handling ist schon etwas anders als auf einen PC. Es gibt nicht eine einzige Event Händler Routine wie bei einen PC Programm. Das löst man über verschiedene Listner.


    Deshalb musst du auch für deinen Views (Button) einen Listner erstellen. Denn dort kommt das Event an.Hast du zb. auch eine Liste, Menu , Spinner … wird es immer einen eigenen Listner geben. In dem du arbeitest.


    Ein Vorteil von Kotlin istdas du das Suchen der ID mit finfViewById wie in Java nur noch selten machen musst. Das nimmt dir Kotlinmit einem Plugin ab.


    Das setzen des Listner zu den Elementen musst aber auch noch selber machen ist aber auch hier einfacher geworden. Dank lambda expression die es zwar auch in Java gibt aber nicht so mächtig wie in Kotlin.


    Mit interface kannst du aber auch Listner zusammenfassen, um zb alle Button in einer Methode bearbeiten zu können.

    Hallo aus welcher Programmierer ecke kommst du? Bzw. welcheSprache hast du bisher benutzt?


    Ich komme auch aus der C / C++ ecke mit und ohne OOP. Auch ich habe am Anfang etwas mit dem OOP Schwierigkeiten gehabt.


    Eigentlich ist Android nicht so gut geeignet um das Programmieren mit OOP zu lernen.
    Ist zwar Java oder Kotlin aber es gibt einige unterschiede zum Programmieren mit Java Kotlin auf Desktop PC.



    Der erste ist das Android eigentlich kein Betriebssystem sondern ein Framework ist. Es gibt dort keine „main“ Methode oder auch Funktion um mit Worten von C und Kotlin zu sprechen.



    Schaue dir mal an wie ein Java, C++,Kotlin Programm für einen Desktop Pc aus schaut. Dort erbt eigentlich deine Start Klasse nicht von irgendetwas. Die enthält auch immer eine main() Funktion die beim Programmstart aufgerufen wird.



    Das ist in Android nicht so.Du erbst von der Klasse Acticty oder AppCompatActivity und dort überschreibst du Methoden „Overeide“ der geerbten Klasse(super Klasse). Dies sind Callback Methoden vom System, und werden vom System selbstständig aufgerufen.



    Als sogenannte einstiges Methode kannst du die „onCreate“ betrachten die wird beim Activity Start immer aufgerufen.


    Um das besser zu verstehen solltest du dir den Activity Lifecycle ansehen. Auch wenn du immer nur Learning-by-doing machst wirst du da nicht drum rum kommen.


    https://developer.android.com/…vities/activity-lifecycle



    Das Framework ist eigentlich ein Java Programm was immer läuft und deine Klassen zu Laufzeit hinzufügt und Startet. Dieses Framework wurde beim Handystart mit der main() Methode gestartet und läuft jetzt immer. Des halb gibt es auch keine main Funktion in Android .



    Android und Java arbeiten mit Listnern die du auf deine View Element zb Button setzt. Und der Listner was wieder eine Callback Methode ist wird aufgerufen wenn du auf den Button klickst. Dies ist auch mit Java oder Kotkin auf einem Desktop Rechner nicht viel anders. Nur das du dort die Instanzen der Views andrer holst. Und die Listner anders setzt.



    Es gibt hier auch keine Konsole wo du eine einfach Ausgabe und Eingabe machen kannst.Android ist eine GUI diek komplet grafisch und nicht Text orientiert arbeitet. So wie es zb mit Standard C möglich ist eine printf ausgabe zumachen geht in Android nicht.



    So ich denke das reicht erstmal.



    Ob nun Kotlin für das Lernen mit OOP das richtige ist, glaube da Streiten sich die sich die Gemüter. Ich Persönlich denke das Java für den Anfang verständlicher ist als Kotnin .
    Auch wen Java etwas mehr Tipp Arbeit ist.
    Vorfallen willst du ja erst mal das Prinzip was hindere der AndroidProgrammierung steckt verstehen, und da denke ich ist Java besser eeignet.




    Von welcher Sprache kommst du ? Weil du noch nie mir OOP in Berührung gekommen bist. C++, C#, Perl, Python, PHP, VB, Ruby, Swift, … selbst Pascal können OOP.

    Hallo
    Da du nun schon öfters nachgefragt hast.


    Erstmal wüste ich gern welche Einstellung du genau sucht. Ich denke das ist eine die unter Entwicklereinstellung zu finden ist.
    Weiß ich jetzt auch nicht genau wie du die abfragen kannst.


    Da es hier keiner zu wissen Scheint auch sonst keiner helfen will.


    Würde ich mal die Frage in einem anderen Forum stellen. Da wird meisten auch schneller geholfen als hier den die Admins scheinen hier wenig Interesse zu haben.


    https://www.androidpit.de/forum/android-entwickler-forum
    https://www.android-hilfe.de/f…ndroid-app-entwicklung.9/


    viel Erfolg.