Hallo,
sorry das ich erst jetzt antworte.
Also das mit den shared preferneces wird nicht gehen. Meine Frage bezieht sich hier zwar nur auf kleine Progress-Werte von maximal 10 Leveln.
Jedoch soll über selbes Prinzip später auch noch ein XML File ausgelesen werden, was ca. 300 Sprites beinhaltet. Die alle als referenz zu speichern erscheint mir nicht für sinnvoll. Noch dazu müssen später verdammt viele Strings gespeichert werden.
Nun da ich einfach keine Lösung finde und nicht weiter kam dachte ich ich könnte einfach SQLite Datenbanken benutzen?
Habe auch ein Tutorial gemacht, welches mir 3 Klassen erklärte die ich benötige, die scheinen soweit auch zu funktionieren.
Das wäre einmal eine Klasse die von SQLiteOpenHelper ableitet, eine die einen Eintrag darstellt (durch getter und setter) und eine die dann die Einträge erstellt und die Liste zurück liefert usw.
Leider wird in dem Tutorial nirgends gezeigt oder erklärt, wie man nun diese Klassen dazu verwendet um auf Activity A eine Datenbank anzulegen und dann auf Activity C diese auszulesen.
Kann mir da jemand weiter helfen?
Edit:
Hier mal der Code hat ja doch keinen Sinn anders^^:
LevelDataBase:
1public class LevelDatabase extends SQLiteOpenHelper
2{
3
4
5 private static final String DATABASENAME ="levels.db";
6 private static final int DATABASEVERSION = 1;
7
8 private static final String TABLECREATELEVELS =
9 "" + "create table LEVEL" + "ID integer primary autoincrement"
10 + "NAME String" + "PROGRESS int" +"MAXIMUMPROGRESS int";
11
12 public LevelDatabase(Context context)
13 {
14 super(context, DATABASENAME, null, DATABASEVERSION);
15
16 }
17
18 @Override
19 public void onCreate(SQLiteDatabase db)
20 {
21 // TODO Auto-generated method stub
22 db.execSQL(TABLECREATELEVELS);
23 }
24
25 @Override
26 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
27 {
28 // TODO Auto-generated method stub
29 db.execSQL("DROP ITEM IF EXISTS SCAN ITEM");
30 onCreate(db);
31 }
32
33}
Entry:
1public class LevelEntry
2{
3 private long id;
4 private String name;
5 private int progress;
6 private int maximumProgress;
7
8 public int getMaximumProgress()
9 {
10 return maximumProgress;
11 }
12 public void setMaximumProgress(int maximumProgress)
13 {
14 this.maximumProgress = maximumProgress;
15 }
16 public long getId()
17 {
18 return id;
19 }
20 public void setId(long id)
21 {
22 this.id = id;
23 }
24 public String getName()
25 {
26 return name;
27 }
28 public void setName(String name)
29 {
30 this.name = name;
31 }
32 public int getProgress()
33 {
34 return progress;
35 }
36 public void setProgress(int progress)
37 {
38 this.progress = progress;
39 }
40}
DataSource:
1public class LevelsDataSource
2{
3 private SQLiteDatabase database;
4 private LevelDatabase leveldatabase;
5 private String[] allColumns = {"ID","NAME","PROGRESS","MAXIMUMPROGRESS"};
6
7 public LevelsDataSource(Context context)
8 {
9 leveldatabase = new LevelDatabase(context);
10 }
11
12 public void open() throws SQLException
13 {
14 database = leveldatabase.getWritableDatabase();
15 }
16
17 public void close()
18 {
19 leveldatabase.close();
20 }
21
22 public LevelEntry createEntry(String name,int progress,int maximumProgress)
23 {
24 ContentValues values = new ContentValues();
25 values.put("NAME", name);
26 values.put("PROGRESS", progress);
27 values.put("MAXIMUMPROGRESS",maximumProgress);
28
29
30 long insertId = database.insert("LEVEL", null,
31 values);
32
33
34 Cursor cursor = database.query("LEVEL",allColumns, "ID = " + insertId, null, null, null, null);
35 cursor.moveToFirst();
36
37 return cursorToEntry(cursor);
38 }
39
40 public List<LevelEntry> getAllEntries() {
41
42 List<LevelEntry> EntriesList = new ArrayList<LevelEntry>();
43 EntriesList = new ArrayList<LevelEntry>();
44
45 Cursor cursor = database.query("LEVEL", allColumns, null, null, null, null, null);
46 cursor.moveToFirst();
47
48 if(cursor.getCount() == 0) return EntriesList;
49
50
51 while (cursor.isAfterLast() == false)
52 {
53 LevelEntry entry = cursorToEntry(cursor);
54 EntriesList.add(entry);
55 cursor.moveToNext();
56 }
57
58 cursor.close();
59
60 return EntriesList;
61 }
62
63
64 private LevelEntry cursorToEntry(Cursor cursor)
65 {
66 LevelEntry entry = new LevelEntry();
67 entry.setId(cursor.getLong(0));
68 entry.setName(cursor.getString(1));
69 entry.setProgress(cursor.getInt(2));
70 entry.setMaximumProgress(cursor.getInt(3));
71
72 return entry;
73 }
74}
Aufrufen wollte ich den Spaß jetzt so:
1levelsdatasource = new LevelsDataSource(this);
2 levelsdatasource.open();
3 levelsdatasource.createEntry("Test", 14, 25);
4 levelsdatasource.close();
Hier jedoch bei der Zeile levelsdatasource.open() stürzt mir das Programm ab mit der Meldung "Source not found"
Was tun? Oo
MfG
— geändert am 07.12.2012, 11:30:26
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.