Datenbank, Fehler beim Einlesen

  • 12 Antworten
  • Letztes Antwortdatum
D

DasSuko

Neues Mitglied
0
Guten Tag Android-Hilfe Community,

ich habe folgendes Problem:
Beim meinem Projekt habe ich Datensätze aus der String.xml in eine Datenbank eingelesen. Das Funktioniert auch reibungslos (Wenn ich die Datenbank mit SQLite Database Browser auslese dann ist alles da wo es sein soll).
Allerdings stürzt beim Aufruf der Activity die App ab.
Ich werde leider aus der Fehlermeldung nicht klug... kann mir da einer Helfen ?

Meine Vermutung:
Es liegt an der for-schleife, scheinbar versucht er da 526 Datensätze einzulesen, findet aber nur 106 Einträge in der string.xml. Eigentlich sollte er doch nur 106 einlesen wollen mit nameItem.length, oder sehe ich das falsch ?

Fehlermeldung:
attachment.php

Quellcode:
...Activity.java
Code:
...
Handler dbh = new Handler(this);
        ...
        String [] nameItem = getResources().getStringArray(R.array.champions_array);
        ...
        
        for(int i=1;i<nameItem.length;i++){
        	// for the abilities of the champions
        	int j = i*5;
        	String [] pItem = powerItem[i].split(" ");
        	Integer pI_0 = new Integer(pItem[0]);
        	...
        	dbh.addChampion(new Champion(i, nameItem[i],abilItem[j-4],abilItem[j-3],abilItem[j-2],abilItem[j-1],abilItem[j], pI_0, pI_1, pI_2, pI_3, attItem[i])); // Zeile 43 im Quellcode
        }
...
Handler.java
Code:
...
public void addChampion(Champion champion){
		SQLiteDatabase database = this.getWritableDatabase();
		
		ContentValues values = new ContentValues();
		values.put(NAME, champion.getName());
		...
		database.insert(TABLE_NAME_COV, null, values);
		database.close();
	}
...
 

Anhänge

  • error.png
    error.png
    24 KB · Aufrufe: 490
Hey, ich weiß zwar nicht wo genau deine Fehlermeldung kommt aber da steht du versuchst ein Wert aus ein Array zu rufen der garnicht existiert, example: du hast ein Array mit 2 werte a[1]; -> a[0] + a[1] und du versuchst a[2] zu rufen oder ähnliches^^ deswegen auch die Fehlermeldung arrayoutofboundsexception

mfg
 
Die Fehlermeldung kommt bei der for-schleife.
 
Genau und dort wo du new Champion aufrufst und dabei ein haufen arrays übergibst kommt das Problem wegen überschreitung eines arrays
 
Das Problem gilt es zu lösen und ich weiß nicht wie ^^
Habe 106 Werte bei i, aber er versucht 526 einzulesen.
 
zeig mal die initialisierung dieses arrays
abilItem
Da drin müssen ü 500 Werte reinpassen denn j = i * 5 und wenn die forschleife bei dem Wert 105 ist sinds gleich 525 werte
 
Code:
String [] abilItem = getResources().getStringArray(R.array.abili_array);
 
und die
R.array.abili_array noch pls
 
Vielleicht solltest du dein Problem mit einer Liste lösen?

SCHWACHSIN, vergiss meinen Post :D
 
Zuletzt bearbeitet:
Code:
<string-array name="abili_array"> //Zeile 245
    <item> ...</item>
     ... 530 items...
<string-array name="abili_array"> //Zeile 777

776 - 245 = 530 (items)
 
ich nehme mal an das es daran liegt
abilItem[j], mach mal diesen wert auf abilItem[j-1] (nur zum probieren) und berichte dann ob es funktioniert
 
Ok, Fehler gefunden xD
Manchmal sieht man die einfachsten Dinge nicht, ich danke dir für die Hilfe Kollen. Ohne dich wäre ich nicht drauf gekommen.

Lösung:
Code:
Alt: 
...
for(int i=1;i<=nameItem.length;i++)
...
Neu:
...
for(int i=1;i<=(nameItem.length-1);i++)
...

Da ich bei 1 anfange muss ich die länge auch kürzen (length-1), sonst Fehlt am Ende immer ein Item.
Danke.

PS: kann geschlossen werden.
 
x
 
Zurück
Oben Unten