Error beim starten der Activity

Patwerk

Patwerk

Neues Mitglied
0
Hallo zusammen,

ich bekomme leider immer Fehler, wenn ich über
Code:
Intent i = new Intent(startup.this, List.class);
            startup.this.startActivity(i);
zu starten

versuche eine Activity aufzurufen.

In meiner Anfangsactivity "startup.java" versuche ich über diesen Code meine Activity "List.java" aufzurufen:

List.java
Code:
public class List extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        setContentView(android.R.layout.simple_list_item_1);
        //ShowList();  
    }
Doch beim starten der App im Emulator bekomm ich immer die Fehlermeldung "Application stopped unexpectly".

Ich habe mal versucht rein zu debuggen und an der stelle des Erstellens des Intents bekomme ich folgende Fehlermeldung:

errordm.png


Weiß einer von euch, was ich falsch mache?
Ich habe die Activity auch im Manifest registriert.

Danke schon mal für eure Hilfe,

Viele Grüße,
Patwerk
errordm.png
 
Patwerk schrieb:
Hallo zusammen,

ich bekomme leider immer Fehler, wenn ich über
Code:
Intent i = new Intent(startup.this, List.class);
            startup.this.startActivity(i);
zu starten

Folgender Aufruf sollte eigentlich reichen.

Code:
Intent i = new Intent(getApplicationContext(), List.class);
startActivity(i);
Patwerk schrieb:
Code:
public class List extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        setContentView(android.R.layout.simple_list_item_1);
        //ShowList();  
    }

Das verwendete Layout ist für ListItems gedacht. Da Du hier eine ListActivity verwendest, gehe ich davon aus, dass Du eigentlich eine ListView anzeigen willst. Im einfachsten Fall musst Du für eine ListActivity überhaupt kein setContentView() aufrufen, da dieses standardmäßig bereits über ein ListView verfügt. Findet ein ListView in seinem ContentView keine ListView mit der ID "@+id/android:list", so löst sie eine Exception aus und wenn diese nicht abgefangen wird, stürzt die Activity dann einfach ab, weil das onCreate() gescheitert ist.

Ansonsten kann ich die Quellcodes der ApiDemos von Google (werden beim SDK mitgeliefert und sind über Eclipse sehr einfach einzurichten) sehr zur Lektüre und Forschung empfehlen. Zum effizienten Umgang mit ListViews weise ich hier besonders auf das Package com.example.android.apis.view - List14.java hin, da wird die Verwendung eines BaseAdapters als Quelle für ein Listview gezeigt.
 
  • Danke
Reaktionen: Patwerk
Logcat steht normalerweise eine Beschreibung und Stacktrace
 
Okay daran lag es echt. Danke dir^^ Nun kann ich endlich weiter probieren die sql abfrgae resultate in eine Liste zu binden. Ich werd mir die google api demos mal anschauen, danke ;-)
 
Also ich hänge leider immernoch daran, ein SQL-Query Ergebniss an ein ListView zu binden.

Hier erstmal mein Code:

Code:
SQLiteDatabase db;
db = openOrCreateDatabase("Test.db",SQLiteDatabase.CREATE_IF_NECESSARY,null);
db.execSQL("CREATE TABLE IF NOT EXISTS awActivitiesTest" +
                    "(ID INTEGER PRIMARY KEY AUTOINCREMENT," +
                            "Name varhcar(50)," +
                            "Exp varchar(10))");
db.execSQL("DELETE FROM awActivitiesTest", null);
db.execSQL("INSERT INTO awActivitiesTest(Name)VALUES (\"clean\")",null);
Cursor c = db.rawQuery("SELECT * FROM awActivitiesTest", null);
startManagingCursor(c);
int NameColumn = c.getColumnIndex("Name");
int xpColumn = c.getColumnIndex("Exp");

// Now create a new list adapter bound to the cursor.
ListAdapter adapter = new SimpleCursorAdapter(this,android.R.layout.two_line_list_item, c, new String[] {c.getString(NameColumn), c.getString(xpColumn)}, new int[] {android.R.id.text1, android.R.id.text2});

setListAdapter(adapter);
db.close();
Naja das ganze passiert in einer Try-Catcht Blocks und es wird eine Exception geworfen:

"java.lang.IllegalArgumentException: Empty bindArgs"

Ich habe das binden von
http://developer.android.com/reference/android/app/ListActivity.html
 
Für den Umgang mit Datenbanken empfehle ich erst mal einen Blick in diesen sehr schönen Artikel: Creating and Using Databases in Android

An ein ListView gebunden habe ich einen DB-Cursor allerdings auch noch nicht, Dein Quellcode sieht aber diesbezüglich etwas confus aus ;-)

Bist Du sicher, dass die DB mit einem geöffneten und gebundenen Cursor einfach geschlossen werden darf?
 
Zuletzt bearbeitet:
Naja die Idee mit dem Cursor habe ich von dieser Seite hier:

ListActivity | Android Developers

da wird ja auch ein Cursor an einen ListAdapter gebunden und dieser dann an das ListView via setListAdapter(ListAdapter) gebunden.

Aber es muss doch irgendwie möglich sein, ein SQLite-Queryergebniss direkt an ein ListView zu binden, sodass sich die Liste dynamisch füllt.
 
SQL-Datenbanken liefern leider keinen Callback wenn die Daten scih geändert haben - da must du schon selbst pollen.
 
ko5tik schrieb:
SQL-Datenbanken liefern leider keinen Callback wenn die Daten scih geändert haben - da must du schon selbst pollen.

Hmm okee was bedeutet pollen? ^^

Die Daten ändern sich letzlich auch nicht in der Datenbank. Es ist nur ne Datenbank mit einer Anzahl von verschiedenen Tätigkeiten, welche dann in einer Liste ausgegeben werden soll und von denen der User eine Auswählen soll.

Wie in meinem Code zu sehen, füge ich nur einen Datensatz hinzu, um eine Ausgabe zu haben, letzlich wird die Datenbank nur einmal am Anfang der App gebuildet und mit Datengefüllt und diese Daten sollen dann in der Liste angezeigt werden.
 

Ähnliche Themen

Laser5001
  • Laser5001
Antworten
2
Aufrufe
897
Laser5001
Laser5001
S
  • Sempervivum
Antworten
2
Aufrufe
605
Sempervivum
S
M
Antworten
3
Aufrufe
146
moin
M
Zurück
Oben Unten