Daten aus einer Tabelle in ein Array übernehmen

H

heikoj10.1

Neues Mitglied
4
Hallo,

ich versuche eine App zu schreiben, bei der ich Werte in eine Tabelle eingeben, diese sollen dann ich ein Array aus Integer übernommen werden, so dass ich sie mit einer Schleife weiter verarbeiten kann. Leider will mir das nicht gelingen. Immer wenn ich den Button drücke, der die Daten übernehmen und verarbeiten soll, bevor die Daten an die nächste Activity übergeben werden, stürzt das Programm ab.

Java:
public class Tabelle extends Activity implements View.OnClickListener {

    private EditText[] etPauseTabelle;
    
    Button btnStart;

    int[] pause = new int[10];
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tabelle);
        // Verhindern dass sich der Bildschirm dreht
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        btnStart = findViewById(R.id.btnStartTabelle);
        btnStart.setOnClickListener(this);

        EditText[] etPauseTabelle = new EditText[] {
                findViewById(R.id.etPauseTabelle1),
                findViewById(R.id.etPauseTabelle2),
                findViewById(R.id.etPauseTabelle3),
                findViewById(R.id.etPauseTabelle4),
                findViewById(R.id.etPauseTabelle5),
                findViewById(R.id.etPauseTabelle6),
                findViewById(R.id.etPauseTabelle7),
                findViewById(R.id.etPauseTabelle8),
                findViewById(R.id.etPauseTabelle9),
                findViewById(R.id.etPauseTabelle10)
        };
       pause[0] = 25;
       etPauseTabelle[0].setText(Integer.toString(pause[0])); // das hier funktioniert
    }



   public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btnStartTabelle:
                if (etPauseTabelle[0].getText().toString().isEmpty()) {
                    pause[0] = 1;
                } else { // das zuruecklesen funktioniert nicht
                    pause[0] = Integer.parseInt(etPauseTabelle[0].getText().toString());
                }

                Intent intenttabelle = new Intent(this, Serie.class);

                // die Werte an den Intent Serie uebergeben
                intenttabelle.putExtra("Pause", pause[0]);

            break;
            default:
            break;
        }
    }

Ich denke es ist nur eine Kleinigkeit aber ich bin nun schon zwei Tage dran und habe noch keine Lösung.

Ich hoffe mir kann jemand helfen. Im Voraus schon einmal vielen Dank dafür.

Viele Grüße
 
Hallo erstmal willkommen im Forum.

Bei den Zurücklesen ist den überhaupt etwas in der Variablen enthalten?
Das prüfst du gar nicht vorher.
Auch sollte das wandeln in den Int in einen Try and Catch Block . Um auch die eventuellen Fehler abzufangen.
parseInt() gehört immer in einen Try & Catch müsste die DIE auch anmeckern.

Überlege was passiert wenn in dem EditText „abc123“ steht das wird er nie in ein Int umwandeln deshalb Error Behandlung.
Was ist wenn der String „“ oder „null“ ist da wird auch ein Fehler ausgelöst.

Frage zu deinem Intent willst du wirklich nur den einen Int wert [0] mitgeben oder das gesamte Array?
Abschicken tust du den Intent aber auch nicht .
 
Hallo, vielen Dank für die schnelle Antwort.

Später will ich mal mehr Werte übergeben, aber es hat ja nicht mal mit einem Wert funktioniert, da habe ich die anderen gleich gar nicht eingegeben.
Die Tabelle soll auch mal nicht ganz ausgefüllt sein und dann sollte die nächste Activity nur so oft ausgeführt werden, wie viele Zeilen komplett ausgefüllt sind.
Das würde ich dann mit einer Schleife machen, die schaut ob sinnvolle Werte eingegeben sind und dann jeweils die Activity starten.

Es ist auch nicht die ganze Quelle sondern nur ein Teil.

ich habe doch abgefragt ob der Wert leer ist, wenigstens war das meine Meinung mit dem folgenden Code.


Java:
  if (etPauseTabelle[0].getText().toString().isEmpty()) {

                    pause[0] = 1;

                } else { // das zuruecklesen funktioniert nicht

                    pause[0] = Integer.parseInt(etPauseTabelle[0].getText().toString());

                }

und in der activity_tabelle.xml habe ich als inputType="number" eingegeben, damit bin ich davon ausgegangen dass nur Zahlen eingegeben werden können.

XML:
            <EditText
                android:id="@+id/etPauseTabelle1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10"
                android:gravity="end"
                android:inputType="number"
                android:textSize="12sp" />
 
Ja der XML Eintrag läßt nur Nummern zu.
Aber richtig prüfen ob etwas eingegeben wurde tust du nicht.

Ich würde auch nicht nach empty fragen sondern .equels("")
Beiträge automatisch zusammengeführt:

Bedenke das deine EditText keinen Inhalt haben können somit kann der zurückgegebe Sting auch null sein, das ist nicht das gleiche wie 0.
Auch wenn der string leer ist "" ist es nicht 0 für das parsen nur wenn wiklich "0" im string steht parst er auch int=0
Sonst gibt es einen Fehler.
Beiträge automatisch zusammengeführt:

Prüfe mit dem Debugger setze einen breakpoint auf das if. Und schau dir die Variablen an was der Inhalt ist?
Damit du das verstehst Erstelle eine hilfs Variable um zu sehen welchen Inhalt der EditText hat an der Stelle.
Beiträge automatisch zusammengeführt:

Für das Grundverständnis

System.out.println(StringUtils.isEmpty("")); / true
System.out.println(StringUtils.isEmpty(null)); // true
System.out.println(StringUtils.isEmpty("Java")); // false

System.out.println(StringUtils.isBlank(" ")); // true
 
Zuletzt bearbeitet:
Vielen Dank, ich werde es mal ausprobieren.
 

Ähnliche Themen

R
Antworten
6
Aufrufe
970
swa00
swa00
D
  • Data2006
Antworten
14
Aufrufe
437
jogimuc
J
A
Antworten
10
Aufrufe
1.002
swa00
swa00
Zurück
Oben Unten