R
roman85
Neues Mitglied
- 0
Huhu ich wollte in einer Liste Datensätze hinzufügen und mir dann in einer ListView anschauen. Wenn ich unten geposteten Code ausführe startet das Programm nicht. Ändere ich bei der Klasse von ListActivity zu Activity funktioniert es, aber dann kennt er natürlich setListAdapter nicht :-(
1.Klasse
2.Klasse
Fehlermeldung
1.Klasse
Code:
import android.app.Activity;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class Datenbanken extends [COLOR="red"]ListActivity[/COLOR]{
private DatenbankManager mHelper;
private SQLiteDatabase mDatenbank;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.daten_datenbanken);
mHelper = new DatenbankManager(this);
}
protected void onPause() {
super.onPause();
mDatenbank.close();
Toast.makeText(this, "Datenbank geschlossen", Toast.LENGTH_SHORT)
.show();
}
protected void onResume() {
super.onResume();
mDatenbank = mHelper.getReadableDatabase();
Toast.makeText(this, "Datenbank geöffnet", Toast.LENGTH_SHORT).show();
ladeKlassen();
}
private void ladeKlassen() {
Cursor klassencursor = mDatenbank.rawQuery(
DatenbankManager.KLASSEN_SELECT_RAW, null);
startManagingCursor(klassencursor);
SimpleCursorAdapter klassenAdapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1, klassencursor,
new String[] { "name" }, new int[] { android.R.id.text1 });
[B][COLOR="Red"]setListAdapter(klassenAdapter);[/COLOR][/B]
}
public void onButtonClick(View view) {
EditText editText = (EditText) findViewById(R.id.id_textfeld_datenbanken_einfuegen);
String text = editText.getText().toString();
ContentValues werte = new ContentValues();
werte.put("name", text);
mDatenbank.insert("klassen", null, werte);
editText.setText("");
ladeKlassen();
}
}
2.Klasse
Code:
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatenbankManager extends SQLiteOpenHelper {
private static final String DB_NAME = "sternenflotte.db";
private static final int DB_VERSION = 1;
private static final String KLASSEN_CREATE = "CREATE TABLE klassen ("
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL"
+ ")";
private static final String KLASSEN_DROP = "DROP TABLE IF EXISTS klassen";
public static final String KLASSEN_SELECT_RAW = "select _id, name FROM klassen";
public DatenbankManager(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(KLASSEN_CREATE);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(KLASSEN_DROP);
onCreate(db);
}
}
Fehlermeldung
Code:
07-09 21:07:05.515: E/AndroidRuntime(755): FATAL EXCEPTION: main
07-09 21:07:05.515: E/AndroidRuntime(755): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.last_trial/com.example.last_trial.Datenbanken}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
07-09 21:07:05.515: E/AndroidRuntime(755): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
07-09 21:07:05.515: E/AndroidRuntime(755): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-09 21:07:05.515: E/AndroidRuntime(755): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-09 21:07:05.515: E/AndroidRuntime(755): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-09 21:07:05.515: E/AndroidRuntime(755): at android.os.Handler.dispatchMessage(Handler.java:99)
07-09 21:07:05.515: E/AndroidRuntime(755): at android.os.Looper.loop(Looper.java:123)
07-09 21:07:05.515: E/AndroidRuntime(755): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-09 21:07:05.515: E/AndroidRuntime(755): at java.lang.reflect.Method.invokeNative(Native Method)
07-09 21:07:05.515: E/AndroidRuntime(755): at java.lang.reflect.Method.invoke(Method.java:521)
07-09 21:07:05.515: E/AndroidRuntime(755): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
07-09 21:07:05.515: E/AndroidRuntime(755): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
07-09 21:07:05.515: E/AndroidRuntime(755): at dalvik.system.NativeStart.main(Native Method)
07-09 21:07:05.515: E/AndroidRuntime(755): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
07-09 21:07:05.515: E/AndroidRuntime(755): at android.app.ListActivity.onContentChanged(ListActivity.java:245)
07-09 21:07:05.515: E/AndroidRuntime(755): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)
07-09 21:07:05.515: E/AndroidRuntime(755): at android.app.Activity.setContentView(Activity.java:1647)
07-09 21:07:05.515: E/AndroidRuntime(755): at com.example.last_trial.Datenbanken.onCreate(Datenbanken.java:21)
07-09 21:07:05.515: E/AndroidRuntime(755): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-09 21:07:05.515: E/AndroidRuntime(755): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-09 21:07:05.515: E/AndroidRuntime(755): ... 11 more