Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Android-Developers. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

ensacom

Droid

  • »ensacom« ist der Autor dieses Themas

Beiträge: 37

Level: 24 [?]

Erfahrungspunkte: 71 548

Nächstes Level: 79 247

  • Private Nachricht senden

1

25.05.2009, 10:10

Der Umgang mit SQLite

Inhalt des Tutorials ist das Erstellen einer SQLite-Datenbank, das Anlegen von Tabellen, sowie das Einfügen, Ändern und Auslesen von Daten aus einer Datenbank-Tabelle.

Dieses Tutorial wird etwas aufwendiger und besteht aus 3 activitys, nämlich der main-activity, der activity "fahrzeuge" auf der die gespeicherten Fahrzeuge in einer Liste ausgegeben werden und der activity "Fahrzeug_New" wo man ein neues Fahrzeug anlegen oder ein in der vorherigen activity selektiertes Fahrzeug bearbeiten kann.

Alle Dateien die in diesem Tutorial angesprochen werden finden Sie im Anhang.

Wie man ein Android-Projekt erstellt werde ich hier nicht erläutern da dies jedem klar sein sollte.

Wir definieren also in der main-activity erst ein mal ein paar Variablen die wir im Programm öfter benutzen werden.

MyDB bietet Methoden Verwalten einer SQLite-Datenbank. Dazu gehören das Erstellen und Löschen von Datenbanken und Tabellen, sowie das Ausführen von SQLAnweisungen.
MY_DB_NAME ist der Name der Datenbank.
MY_DB_TABLE ist die Tabelle die wir erzeugen wollen
MENU_FAHRZEUGE repräsentiert die ID für unseren einzigen Menüpunkt über den wir zur nächsten activity gelangen.


[size=large]Activity TankPro2[/size]

Quellcode

1
2
3
4
5
6
public class TankPro2 extends Activity {		
	SQLiteDatabase myDB = null; 
	final static String MY_DB_NAME = "TankPro2";
	final static String MY_DB_TABLE = "fahrzeuge";

	static final int MENU_FAHRZEUGE = 1;






Wir wollen, dass beim starten der Anwendung eine Verbindung zu unserer Datenbank aufgebaut wird. Dazu wird als erstes geprüft ob die Datenbank und die benötigten Tabellen überhaupt existieren. Sollte die Datenbank vorhanden sein, wird eine Verbindung zu dieser hergestellt. anderenfalls wird die Datenbank erzeugt und anschließend zu dieser verbunden. Das gleich geschieht mit unseren Datenbanktabellen. Sollte eine Tabelle nicht existieren, wird diese angelegt.

Quellcode

1
2
3
4
5
6
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    onCreateDBAndDBTabled(); //DB und Tables erstellen wenn noch nicht vorhanden
    setContentView(R.layout.main);
}






Hier nun die Funktion zum erstellen der Datenbank und der Datenbanktabellen.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
private void onCreateDBAndDBTabled() {
    myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
    myDB.execSQL("CREATE TABLE IF NOT EXISTS " + MY_DB_TABLE
                + " (_id integer primary key autoincrement, 
                      name varchar(100), 
                      model varchar(100), 
                      bemerkungen varchar(255), 
                      kraftstoffart integer(3), 
                      tankinhalt integer(3))"
                +";");
    }


Genauso können wir direkt in dieser Funktion SQL-Befehle zum löschen einer Tabelle oder zum einfügen von Daten in eine Tabelle angeben.


Nun erstellen wir noch einen Menüpunkt über den wir zur nächsten
activity „fahrzeuge“ gelangen. Dieser Menüpunkt wird nach anklicken
des Menübuttons auf unserem Handy angezeigt.

Quellcode

1
2
3
4
5
6
7
8
9
public boolean onCreateOptionsMenu(Menu menu) {
  super.onCreateOptionsMenu(menu);

    menu.add(0, MENU_FAHRZEUGE, 0, R.string.menuFahrzeuge)
    .setShortcut('1', 'f')
    .setIcon(R.drawable.menu_fahrzeuge);
     return true;

  }



Nun müssen wir unseren Menüpunkt noch mit einer Aktion versehen.
Es wird geprüft ob der Menüpunkt „MENU_FAHRZEUGE“ angeklickt wurde, anschließend wird die activity „fahrzeuge“ geladen und angezeigt.

Quellcode

1
2
3
4
5
6
7
8
9
public boolean onOptionsItemSelected(MenuItem item){
  switch (item.getItemId()) {
  case MENU_FAHRZEUGE:
    Intent iFahrzeuge = new Intent(this, fahrzeuge.class);
    startActivity(iFahrzeuge);
    return true;
  }
  return false;
}




[size=large]Activity fahrzeuge[/size]

Nun befinden wir uns auf der activity „fahrzeuge“ wo wir den Namen und das Model aller in der Datenbank gespeicherten Fahrzeuge in einer Liste ausgeben lassen.
Außerdem wird es wieder einen Menüpunkt geben über den wir ein neues Fahrzeug anlegen können. Um die Daten eines Fahrzeuges zu bearbeiten klickt man in der Liste einfach auf den entsprechenden Eintrag, worauf die activity „Fahrzeug_New“ wie auch beim anklicken des Menüpunktes „Neues Fahrzeug“ gestartet und angezeigt wird nur das in diesem Fall die ID des Fahrzeuges mit übergeben wird.



Wir connecten zu unserer Datenbank und lesen anschließend die _id, den Namen und das Model aller Fahrzeuge aus. Die Daten werden im SimpleCursorAdapter hinterlegt den wir anschließend mit unserer Liste verbinden.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class fahrzeuge extends ListActivity {
  SQLiteDatabase myDB = null;
  
  static final int MENU_NEW_KFZ = 0;

  public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
          
       
        myDB = this.openOrCreateDatabase(TankPro2.MY_DB_NAME, MODE_PRIVATE, null);
         
        Cursor c = myDB.rawQuery("SELECT _id, name, model FROM " + TankPro2.MY_DB_TABLE + ";", null);        
        startManagingCursor(c);    

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                android.R.layout.simple_list_item_1, 
                c,
                new String[] { "_id" },
                new int[] { android.R.id.text1 });
      
     
        adapter.setViewBinder(new ViewBinder() {
            
            @Override
            public boolean setViewValue(View view, Cursor theCursor, int column) {
               
                String ColumnName = theCursor.getString(1); //Name
                String ColumnModel = theCursor.getString(2); //Model
               
                ((TextView)view).setText(ColumnName + ", " + ColumnModel);

                return true;
            }
        });
        this.setListAdapter(adapter);
    }






Nun legen wir die Funktion „onListItemClick“ an die aufgerufen wird wenn wir einen Eintrag in der Liste anklicken.
Es wird die activity „Fahrzeug_New“ gestartet und ihr die _id des angeklickten Eintrages übergeben.
Das übergeben einer Variable an eine weitere activity geschieht über putExtra. PutExtra übergibt man den Namen der Variable und den zu übergebenden Wert.

Quellcode

1
2
3
4
5
6
7
8
@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		super.onListItemClick(l, v, position, id);
		
		Intent i = new Intent(this, Fahrzeug_New.class);
		i.putExtra("id", id);
        this.startActivity(i);
	}






Jetzt erstellen wir wie in der vorhergehenden activity wieder ein Optionsmenü und hauchen ihm mit „onOptionsItemSelected“ Leben ein.

Quellcode

1
2
3
4
5
6
7
public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
		menu.add(0, MENU_NEW_KFZ, 0, R.string.menuNewKFZ)
        .setShortcut('1', 'n')
        .setIcon(android.R.drawable.ic_menu_add);
        return true;
    }


Quellcode

1
2
3
4
5
6
7
8
9
    public boolean onOptionsItemSelected(MenuItem item){
    	switch (item.getItemId()) {
        case MENU_NEW_KFZ:        	
        	Intent iFahrzeug_new = new Intent(this, Fahrzeug_New.class);
            startActivity(iFahrzeug_new);
        	return true;	
        }
        return false;
    }




[size=large]Activity Fahrzeug_New[/size]

Diese activity ist etwas aufwendiger da wir mit ihr ein neues Fahrzeug anlegen oder aber ein zuvor auf der activity „fahrzeuge“ selektiertes Fahrzeug bearbeiten können.


Diese activity wird von der activity „fahrzeuge“ aufgerufen sobald man ein Fahrzeug aus der Liste auswählt oder man auf den Menüppunkt „Neues Fahrzeug“ klickt.

Wir haben uns gemerkt, das beim anklicken eines Fahrzeuges in der Liste, die _id des gewählten Fahrzeuges übergeben wird. Dies passiert nicht wenn man auf den Menüpunkt „Neues Fahrzeug“ klickt.

Also müssen wir als erstes überprüfen ob eine _id übergeben wurde um entscheiden zu können ob ein neues Fahrzeug angelegt oder die Daten des gewählten Fahrzeuges aus der Datenbank geladen werden sollen.

Diese Abfrage benötigen wir ein zweites mal bei der Frage ob die Daten neu in die Datenbank eingefügt (Neues Fahrzeug) oder geändert (Fahrzeug wurde in der Liste ausgewählt) werden sollen.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public class Fahrzeug_New extends Activity {
  SQLiteDatabase myDB = null;
  static final int MENU_INSERT_KFZ = 0;
  static final int MENU_UPDATE_KFZ = 0;
	
@Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fahrzeug_new);
        
    Spinner s1 = (Spinner) findViewById(R.id.cb_KfzTreibstoffArt);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, 
            R.array.Kraftstoffarten, 
            android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    s1.setAdapter(adapter);
        

    if(getIntent().hasExtra("id") == true) {
        long l = getIntent().getExtras().getLong("id");
        myDB = this.openOrCreateDatabase(TankPro2.MY_DB_NAME,
                                                              MODE_PRIVATE, null);	
        Cursor myCursor = myDB.rawQuery("SELECT name, 
                                                                            model, 
                                                                            bemerkungen, 
                                                                            kraftstoffart, 
                                                                            tankinhalt 
                                                              FROM " + TankPro2.MY_DB_TABLE + " 
                                                              WHERE _id = "+l+";", null);        
        startManagingCursor(myCursor);
        	
        int ColumnName = myCursor.getColumnIndex("name"); 
        int ColumnModel = myCursor.getColumnIndex("model"); 
        int ColumnBemerkung = myCursor.getColumnIndex("bemerkungen"); 
        int ColumnKraftstoffart = myCursor.getColumnIndex("kraftstoffart"); 
        int ColumnTankinhalt = myCursor.getColumnIndex("tankinhalt"); 
             	
        myCursor.moveToFirst();
        
        if (myCursor != null) {
            if (myCursor.isFirst()) { 
                EditText eName = (EditText)findViewById(R.id.ed_KfzName);
                eName.setText(myCursor.getString(ColumnName));
                	
                EditText eModel = (EditText)findViewById(R.id.ed_KfzModel);
                eModel.setText(myCursor.getString(ColumnModel));
                
                EditText eBemerkungen = (EditText)findViewById(R.id.ed_KfzBemerkung);
                eBemerkungen.setText(myCursor.getString(ColumnBemerkung));
                	
                	
                Spinner sKraftstoffarten = (Spinner)findViewById(R.id.cb_KfzTreibstoffArt);
                sKraftstoffarten.setSelection(myCursor.getInt(ColumnKraftstoffart), true);
                	
                EditText eTankinhalt = (EditText)findViewById(R.id.ed_KfzTankinhalt);
                eTankinhalt.setText(myCursor.getString(ColumnTankinhalt));
            }
        }
    }
}



Wir erstellen das Menü und fragen erneut ab ob eine _id übergeben wurde oder nicht.
Wurde eine _id übergeben, steht auf unserem Button "Update" ansonsten "Speichern"

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        if(getIntent().hasExtra("id") == true)
        {
        	menu.add(0, MENU_UPDATE_KFZ, 0, R.string.menuUpdate)
        	.setShortcut('1', 's')
        	.setIcon(android.R.drawable.ic_menu_save);
        }
        else
        {
        	menu.add(0, MENU_INSERT_KFZ, 0, R.string.menuInsert)
        	.setShortcut('1', 's')
        	.setIcon(android.R.drawable.ic_menu_save);
        }
        return true;
    }




Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    public boolean onOptionsItemSelected(MenuItem item){
        switch (item.getItemId()) {
            case MENU_INSERT_KFZ:
        	EditText KfzName = (EditText)findViewById(R.id.ed_KfzName);
        	EditText KfzModel = (EditText)findViewById(R.id.ed_KfzModel);
        	EditText KfzBemerkungen = (EditText)findViewById(R.id.ed_KfzBemerkung);
        	Spinner KfzKraftstoffart = (Spinner)findViewById(R.id.cb_KfzTreibstoffArt);
        	EditText KfzTankinhalt = (EditText)findViewById(R.id.ed_KfzTankinhalt);
        	
        	int i = KfzKraftstoffart.getSelectedItemPosition();        	
    
        	if(KfzName.length()!=0)
        	{        	
        		myDB = this.openOrCreateDatabase(TankPro2.MY_DB_NAME,
                                                                              MODE_PRIVATE, null);	
            	
//KFZ-Daten updaten (UPDATE)		
        		if(getIntent().hasExtra("id") == true)
                {
                	long l = getIntent().getExtras().getLong("id");
                	myDB.execSQL("UPDATE "+TankPro2.MY_DB_TABLE+" SET "+
                     		"name = '"+KfzName.getText().toString()+"', "+
                		"model = '"+KfzModel.getText().toString()+"', "+
                		"bemerkungen ='"+KfzBemerkungen.getText().toString()+"', "+
                		"kraftstoffart ='"+i+"', "+
                		"tankinhalt = '"+KfzTankinhalt.getText().toString()+"' "+
                		"WHERE _id = "+l+";"); 
                }
//Neues KFZ in Datenbank speichern (INSERT)       		
        		else
        		{                	
        			myDB.execSQL("INSERT INTO "+TankPro2.MY_DB_TABLE+"
                                                                      (name, 
                                                                       model, 
                                                                       bemerkungen, 
                                                                       kraftstoffart, 
                                                                       tankinhalt) "
        					+"VALUES ('"+KfzName.getText().toString()+"',"+
        					"'"+KfzModel.getText().toString()+"',"+
        					"'"+KfzBemerkungen.getText().toString()+"',"+
        					"'"+i+"',"+"'"+
                                               KfzTankinhalt.getText().toString()+"');");
        		}
        		finish();
        		return true;	
        	}
        	else
        	{
        		Toast toast = Toast.makeText(this, "Bitte geben Sie einen Namen für das Fahrzeug ein!", 
                                                                   Toast.LENGTH_SHORT);
        		toast.show();
        	}
        }
        return false;
    }
}
HTC-Magic white
Development: Eclipse Ganymede + Android SDK 1.5
Linux Mint 6

nezouz

Droid

Beiträge: 1

Modell: desire

Android: 2.1

Level: 11 [?]

Erfahrungspunkte: 1 499

Nächstes Level: 2 074

  • Private Nachricht senden

2

27.07.2010, 22:26

Anhänge

hi ensacon,
wollte mich für deinen Beitrag bedanken.
Es sind viele Sachen die du neben SQLlite noch abdeckst (layoutWidgets,Adapter...) ;)
Leider kann ich keinen Link zu den Anhängen finden. (Da ich seit heute hier angemeldet bin, weiss ich nun
nicht ob ich was übersehen hab.) Vielleicht kannst du mich aufklären, was (Anhänge) wo zu finden ist.
Danke schon mal im Voraus

  • »Gravedigger« ist männlich

Beiträge: 36

Modell: Nokia 3310

Wohnort: Barsinghausen

Beruf: Fachinformatiker für Anwendungsentwicklung

Level: 23 [?]

Erfahrungspunkte: 53 592

Nächstes Level: 62 494

  • Private Nachricht senden

3

14.08.2010, 20:07

Erstellen der DB scheitert

Jo, ansich ein schönes und leicht verständliches Tutorial. Allerdings scheitert es bei mir schon beim Erstellen der Datenbank mit

Java-Quelltext

1
myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);


MY_DB_NAME ist korrekt definiert und myDB initialisiert und die sqlite Klasse natürlich eingebunden.

Habe danach versucht Tabellen anzulegen und Datensätze zu schreiben, aber die Activity ist sofort abgestürzt. Die IDE hat beim Compilieren keinen Fehler gezeigt und der ADB Debugger hat auch nicht ausgespuckt dass mir weiter geholfen hätte.
Nachdem ich alle Anweisungen in Try-Catch Blöcke gepackt habe, stellte sich heraus, dass schon das Erstellen der DB fehl schlägt.

Hat jemand eine Idee?

Anzeige

Jon

Super Moderator

  • »Jon« ist männlich

Beiträge: 254

Wohnort: Zürich / London / Los Angeles

Beruf: Developer, Webdesigner

Level: 32 [?]

Erfahrungspunkte: 415 396

Nächstes Level: 453 790

  • Private Nachricht senden

4

16.08.2010, 07:29

Jo, ansich ein schönes und leicht verständliches Tutorial. Allerdings scheitert es bei mir schon beim Erstellen der Datenbank mit

Java-Quelltext

1
myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);


MY_DB_NAME ist korrekt definiert und myDB initialisiert und die sqlite Klasse natürlich eingebunden.

Habe danach versucht Tabellen anzulegen und Datensätze zu schreiben, aber die Activity ist sofort abgestürzt. Die IDE hat beim Compilieren keinen Fehler gezeigt und der ADB Debugger hat auch nicht ausgespuckt dass mir weiter geholfen hätte.
Nachdem ich alle Anweisungen in Try-Catch Blöcke gepackt habe, stellte sich heraus, dass schon das Erstellen der DB fehl schlägt.

Hat jemand eine Idee?


Ist es möglich, dass MY_DB_NAME ein Member einer Klasse ist? Dann musst du den Klassenbezeichner vor MY_DB_NAME schreiben.

wfg Jon

  • »Gravedigger« ist männlich

Beiträge: 36

Modell: Nokia 3310

Wohnort: Barsinghausen

Beruf: Fachinformatiker für Anwendungsentwicklung

Level: 23 [?]

Erfahrungspunkte: 53 592

Nächstes Level: 62 494

  • Private Nachricht senden

5

16.08.2010, 15:56

Das hilft leider auch nicht. Habe sogar versucht den DB Namen direkt als String in den Befehl zu schreiben. Aber sobald der Befehl aufgerufen wird, stürzt das Programm ab, bzw. wird vom Catch abgefangen. Ich weiß nicht mehr weiter, im Prinzip ist der Befehl doch viel zu einfach um was falsch machen zu können. Hab mich wochenlang mit allen GUI-Elementen und Android-Eigenschaften vertraut gemacht und jetzt kann ich mit meinem Projekt nicht loslegen weil ich die Datenbank nicht initialisiert kriege...!?

Gibt es vielleicht irgendwo die Möglichkeit sich eine Fehlermeldung ausgeben zu lassen? Eine log-Datei von SQLite oder irgendetwas das mir sagen könnte was schief läuft?

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package org.me.ganjatest;

import android.database.sqlite.*;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;


public class dbLite extends Activity{

	private SQLiteDatabase myDB = null;
	private gmDebug deb = new gmDebug();
	final static String MY_DB_NAME = "ganjaDB";
  
	public dbLite() 
	{
    	deb.out("dbLite", "Konstruktor wird ausgeführt");
    	onCreateDBAndDBTabled();
    	
	}

	private void onCreateDBAndDBTabled()
	{
    	try
    	{
        	deb.out("dbLite", "versuche Datenbank zu öffnen");
        	myDB = this.openOrCreateDatabase(dbLite.MY_DB_NAME, MODE_PRIVATE, null);
       	

    	}
    	catch (Exception e)
    	{
        	deb.out("dbLite", "offnen der Datenbank fehlgeschlagen");
    	}
	}

}

6

12.10.2010, 10:19

Selbes Problem

Habe das selbe Problem.... Gibt es irgendeine Lösung?

Danke

Anzeigen

Beiträge: 4

Modell: Moto Milestone

Android: 2.1

Level: 15 [?]

Erfahrungspunkte: 5 548

Nächstes Level: 7 465

  • Private Nachricht senden

7

16.11.2010, 09:51

Hallo!

Ich habe das Problem auch gehabt und 5 Stunden gegoogelt.
Mit Hilfe vom catlog (in Eclipse) habe ich herausgefunden, dass die DB nicht geöffnet werden konnte (sqlite Error 14).
Daraufhin habe ich den Fehler gesucht und das Ergebnis ist, dass "MODE_PRIVATE" in "Context.MODE_PRIVATE" geändert werden muss (import nicht vergessen).
Dann ging es wie von Geisterhand...

So sieht es bei mir aus:

Quellcode

1
myDB = this.openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE, null);


Kann es sein, dass es an Android 2.2 liegt und es bei vorherigen Versionen auch ohne Context funktionierte?

rwblinn

Droid

Beiträge: 2

Modell: HTC Desire HD

Android: 2.2

Level: 12 [?]

Erfahrungspunkte: 2 460

Nächstes Level: 2 912

Danksagungen: 7

  • Private Nachricht senden

8

15.05.2011, 19:33

Wie kann ich den anhang bekommen?

tolles beispiel, wo kann ich den anhang mit source dateien bekommen? O:-)

Robert

Somaweb

Droid

Beiträge: 6

Modell: LGP990

Android: 2.2

Level: 15 [?]

Erfahrungspunkte: 6 880

Nächstes Level: 7 465

  • Private Nachricht senden

9

14.07.2011, 15:58

Hi, super geniales Tut, aber wo gibts denn das Projekt zum Downloaden?

Beiträge: 1

Modell: Samsung Galaxy S II

Android: 2.3

Level: 9 [?]

Erfahrungspunkte: 935

Nächstes Level: 1 000

  • Private Nachricht senden

10

12.02.2012, 03:41

ich finde du hast die verwendung von sqlite in java sehr gut und verstänlich erklärt. ich habe schon länger nach so einem tutorial gesucht. jetzt hab ich mich hier durchgearbeitet und den code abgetippt und versucht zu verstehn und hätte jetzt sehr gern die notwenigen dateien damit ich die app auch testen kann, also könnte mir bitte jemand sagen wo dieser anhang sein soll. ich möchte das ganze nicht um sonst gemacht haben. wenn ich den anhang bekomme gibts 5 sterne!

  • »kaetzchenfg« ist weiblich

Beiträge: 13

Modell: Samsung Galaxy Y GT5369

Android: 2.3.6

Beruf: Schülerin

Level: 16 [?]

Erfahrungspunkte: 8 391

Nächstes Level: 10 000

  • Private Nachricht senden

11

18.01.2013, 17:10

An die Mods:

Wo finde ich den Anhang ?! Danke :-)

titus

Android-Entwickler

Beiträge: 541

Level: 36 [?]

Erfahrungspunkte: 834 924

Nächstes Level: 1 000 000

Danksagungen: 109

  • Private Nachricht senden

12

19.01.2013, 12:58

Hi kaetzchenfg,

bin zwar kein Mod aber normalerweise findest du sowas im Beitrag.
Da aber dort nichts zu finden ist sieht es schlecht aus.

Du kannst natürlich versuchen "ensacom" an zuschreiben aber da der Beitrag 3 Jahre alte ist und so wie es aussieht er seinen letzten Post auch in dieser Zeit hatte wirst du wahrscheinlich keine Antwort bekommen.

Mfg Titus

  • »kaetzchenfg« ist weiblich

Beiträge: 13

Modell: Samsung Galaxy Y GT5369

Android: 2.3.6

Beruf: Schülerin

Level: 16 [?]

Erfahrungspunkte: 8 391

Nächstes Level: 10 000

  • Private Nachricht senden

13

19.01.2013, 19:25

Hallo Titus.

Achso.Hm, na ich werde mal mein Glück versuchen, aber ich geb Dir Recht, könnte sein, dass ich keine Antwort bekomme. Naja, zur Not bleibt ja noch abschreiben :-/ . Viele Grüße

Kogoro

Super Moderator

  • »Kogoro« ist männlich

Beiträge: 519

Modell: Samsung Galaxy S2, Note 10.1 WIFI

Android: 4.2.2, 4.1.2

Wohnort: Niedersachsen

Beruf: Student

Level: 35 [?]

Erfahrungspunkte: 706 590

Nächstes Level: 824 290

Danksagungen: 554

  • Private Nachricht senden

14

21.01.2013, 00:12

Der Anhang existiert wohl nicht mehr :(
Aber steht ja viel im Post.
Außerdem sollte man heutzutage mit einem DatabaseHelper arbeiten...
Es gibt dazu einige Tutorials im Netz. ;)
Leider finde ich nicht das, was ich damals benutzt habe. Aber Google hilft dir bestimmt weiter :)
MfG,
Christopher

Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke.

Ich bitte von Anfragen per PN abzusehen!

  • »kaetzchenfg« ist weiblich

Beiträge: 13

Modell: Samsung Galaxy Y GT5369

Android: 2.3.6

Beruf: Schülerin

Level: 16 [?]

Erfahrungspunkte: 8 391

Nächstes Level: 10 000

  • Private Nachricht senden

15

22.01.2013, 11:32

Alles klar, Danke :-)

Thema bewerten

Highlights

Android Jobbörse

Interessante Job Angebote

Jetzt Job Anzeige schalten und den richtigen Mitarbeiter finden! Klicken Sie hier um mehr zu erfahren.

Social-Media