Hallo aus Köln

  • Hallo jagimuc,
    Ich versuche es nochmal zu erklären.
    Ich habe 4 Spinner in meiner App, der 1. Spinner Ist für den Tipp zuständig,
    dort soll in einer Variablen die Position des Spinners gespeichert werden.


    Jetzt möchte ich einen 5. Spinner einfügen, der für die ISO zuständig ist,
    auch hier wird die Spinner Position in einer Variablen gespeichert.
    Mit den beiden Variablen kann ich mit einer If or Anweisung meine Daten
    abfragen, zB Verschlusszeit, Blende und ISO


    Ich möchte aber kein Button für die Aktualisierung benutzen.
    Darum dachte ich mir, wen ich weiß wo die Spinner 1 und 5 stehen,
    und es wird einer der Spinner verändert, ändert sich auch die Positionen des Spinners, so verändert sich auch die IF or Anweisung.
    In der IF Anweisung sind die Daten Verschlusszeit, Blende und ISO abgelegt,
    die dann automatisch angezeigt werden.

  • 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.

  • Hallo,
    ich habe mein Problem gelöst.
    Hier mein Code, oder habt ihr noch ein Parr Verbesserungen?


    Ich werde aber erst den Vorschlag von jagimuc, aufgreifen und das Layout in
    Portrait umschreiben.


    Danke für deine Hilfe jogimuc. 8)

  • Ja schaut besser aus.



    Das einzige was ich nutzen würde ist die Angabe des hyper fokal focus.


    Die Einstellungen würde ich wohl nicht brauchen. Und wenn sollten die auch vom User erweitert veränderbar sein.



    Sinnvoll für mich wäre zu wissen wo bei welcher Blende und Brennweite das gerade verwendete Objektiv die beste Schärfe hat.


    Auch die info wann die Beugungs-Unschärfe stärker wird, könnte auch interessant sein.
    Dafür ist natürlich auch wichtig wo in welcher Entfernung der Fokus ist.
    Denn wenn ich auf einen Kirchturm im der fernne Fokusire ist der Fordergund auch bei hohen Blenden Zahlen unscharf.


    Deshalb ist die Grafik unten für mich nicht Aussage kräftig.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!