Hallo aus Köln

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • 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.
      Beste Grüße
      Robby 8o
    • 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

      Quellcode

      1. spinner3.setOnItemSelectedListener(this); // löschen
      2. spinner3.setOnItemSelectedListener(new OnItemSelectedListener() {
      3. String[] stringBlende = MainActivity.this.getResources().getStringArray(C0694R.array.blende_arrays);
      4. public void onNothingSelected(AdapterView<?> adapterView) { }
      5. public void onItemSelected(AdapterView<?> adapterView, View view, int i, long j) {
      6. .....
      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.


      stackoverflow.com/questions/87…sition-in-spinner/8769522


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

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von nono124 ()

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

      Quellcode

      1. public class MainActivity extends Activity implements AdapterView.OnItemSelectedListener {
      2. String[] countries = {"Amerika","Argentina","Brazil"};
      3. String[] city = {"London","Paris","Buenos Aires"};
      4. int wahlPosCountry =0, wahlPosCity = 0;
      5. @Override
      6. public void onCreate(Bundle savedInstanceState) {
      7. super.onCreate(savedInstanceState);
      8. setContentView(R.layout.activity_main);
      9. Spinner spin1 = (Spinner) findViewById(R.id.spinner1);
      10. ArrayAdapter<String> aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, countries);
      11. aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      12. spin1.setAdapter(aa);
      13. spin1.setOnItemSelectedListener(this);
      14. Spinner spin2 = (Spinner) findViewById(R.id.spinner2);
      15. ArrayAdapter<String> bb = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, city);
      16. bb.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      17. spin2.setAdapter(bb);
      18. spin2.setOnItemSelectedListener(this);
      19. }
      20. public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
      21. parent.getItemAtPosition(pos);
      22. TextView textValue = (TextView) findViewById(R.id.Textselection1);
      23. TextView textValue1 = (TextView) findViewById(R.id.Textselection2);
      24. switch (parent.getId())
      25. {
      26. case R.id.spinner1:
      27. wahlPosCountry = pos;
      28. break;
      29. case R.id.spinner2:
      30. wahlPosCity = pos;
      31. break;
      32. }
      33. textValue1.setText(" " );
      34. textValue.setText(" " );
      35. if (wahlPosCity == 0 && wahlPosCountry == 0 ){
      36. textValue1.setText("Die Position des Spinner 2 ist " + wahlPosCity);
      37. textValue.setText("Die Position des Spinner 1 ist " + wahlPosCountry);
      38. }
      39. else if (wahlPosCity == 1 && wahlPosCountry == 0 ){
      40. textValue1.setText("Die Position des Spinner 2 ist " + wahlPosCity);
      41. textValue.setText("Die Position des Spinner 1 ist " + wahlPosCountry);
      42. }
      43. else if (wahlPosCity == 1 && wahlPosCountry == 1 ){
      44. textValue1.setText("Die Position des Spinner 2 ist " + wahlPosCity);
      45. textValue.setText("Die Position des Spinner 1 ist " + wahlPosCountry);
      46. }
      47. else{
      48. Toast.makeText(getApplicationContext(), "Keine Übereinstimmung?", Toast.LENGTH_LONG).show();
      49. }
      50. }
      51. @Override
      52. public void onNothingSelected(AdapterView<?> adapterView) {
      53. }
      54. }
      Alles anzeigen


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

      Danke für deine Hilfe jogimuc. 8)
      Beste Grüße
      Robby 8o

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Robby ()

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

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von nono124 ()