SimpleCusorAdapter NPE

  • Antworten:4
  • Bentwortet
Tanja Z.
  • Forum-Beiträge: 52

05.04.2011, 20:42:25 via Website

Hallo!

Steh gerade auf dem Schlauch, bekomme folgende Fehlermeldung:

104-05 19:38:18.018: ERROR/AndroidRuntime(739): FATAL EXCEPTION: main
204-05 19:38:18.018: ERROR/AndroidRuntime(739): java.lang.NullPointerException
304-05 19:38:18.018: ERROR/AndroidRuntime(739): at de.reisekosten.gui.BelegeBearbeiten$1.onItemSelected(BelegeBearbeiten.java:447)
404-05 19:38:18.018: ERROR/AndroidRuntime(739): at android.widget.AdapterView.fireOnSelected(AdapterView.java:864)
504-05 19:38:18.018: ERROR/AndroidRuntime(739): at android.widget.AdapterView.access$200(AdapterView.java:42)
604-05 19:38:18.018: ERROR/AndroidRuntime(739): at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:830)
704-05 19:38:18.018: ERROR/AndroidRuntime(739): at android.os.Handler.handleCallback(Handler.java:587)
804-05 19:38:18.018: ERROR/AndroidRuntime(739): at android.os.Handler.dispatchMessage(Handler.java:92)
904-05 19:38:18.018: ERROR/AndroidRuntime(739): at android.os.Looper.loop(Looper.java:123)
1004-05 19:38:18.018: ERROR/AndroidRuntime(739): at android.app.ActivityThread.main(ActivityThread.java:4627)
1104-05 19:38:18.018: ERROR/AndroidRuntime(739): at java.lang.reflect.Method.invokeNative(Native Method)
1204-05 19:38:18.018: ERROR/AndroidRuntime(739): at java.lang.reflect.Method.invoke(Method.java:521)
1304-05 19:38:18.018: ERROR/AndroidRuntime(739): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
1404-05 19:38:18.018: ERROR/AndroidRuntime(739): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
1504-05 19:38:18.018: ERROR/AndroidRuntime(739): at dalvik.system.NativeStart.main(Native Method)


Die Fehlermeldung erscheint beim Aufruf der Activity mit diesem SimpleCursorAdapter:

Beleg.class

1private void belegbSpinner() {
2
3 final Cursor belegbCursor = mBelegeSpeicher.ladeBelegbAuswahl(mBelegeId);
4
5 if (!belegbCursor.moveToFirst()) {
6 Log.i(TAG, "Beleg nicht gefunden. Id" + BelegNr);
7 return;
8 }
9 Log.d(TAG, "Beleg geladen " + belegbCursor.getString(1));
10
11 startManagingCursor(belegbCursor);
12
13 final Spinner fldBelegAuswahl = (Spinner) findViewById(R.id.sp_beleg_nummer_auflisten);
14
15 belegbCursor.moveToFirst();
16
17 final SimpleCursorAdapter belegAdapter = new SimpleCursorAdapter(this,
18 android.R.layout.simple_spinner_item, belegbCursor,
19 ANZEIGE_BELEGE, SIMPLE_LIST_VIEW_ID);
20 belegAdapter
21 .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
22 fldBelegAuswahl.setAdapter(belegAdapter);
23 fldBelegAuswahl.setOnItemSelectedListener(new OnItemSelectedListener() {
24 public void onItemSelected(AdapterView<?> parent, View view,
25 int position, long id) {
26
27 final EditText fldDatum = (EditText) findViewById(R.id.edt_datum_beleg);
28 fldDatum.setText(belegbCursor.getString(belegbCursor
29 .getColumnIndex(BelegeTbl.DATUM)));
30
31 .... blablabla
32
33 }
34
35 @Override
36 public void onNothingSelected(AdapterView<?> arg0) {
37 // TODO Auto-generated method stub
38
39 }
40 });
41 }

BelegSpeicher.class

1public Cursor ladeBelegbAuswahl(long id) {
2
3 return mDb.getWritableDatabase().query(BelegeTbl.TABLE_NAME,
4 BelegeTbl.ALL_COLUMNS, null, null, null, null, null);
5 }

Kann mir jemand sagen, woran das liegt oder könnte? In Tabelle sind Daten vorhanden.

Antworten
Gelöschter Account
  • Forum-Beiträge: 107

05.04.2011, 21:25:30 via Website

Die entscheidene Zeile fehlt. Im Stacktrace steht doch, dass du dort einen NullPointer-Zugriff hast. Geh mal in Zeile 447 von BelegeBearbeiten.java. Das Objekt an dem dort eine Methode gerufen wird, ist nicht initialisiert.

Seid nett zueinander: AndroidPIT-Regeln ;)

Tanja Z.

Antworten
Tanja Z.
  • Forum-Beiträge: 52

05.04.2011, 21:46:38 via Website

Carsten Rose
Die entscheidene Zeile fehlt. Im Stacktrace steht doch, dass du dort einen NullPointer-Zugriff hast. Geh mal in Zeile 447 von BelegeBearbeiten.java. Das Objekt an dem dort eine Methode gerufen wird, ist nicht initialisiert.

Vielen Dank für deine Antwort!

Genau das wars! In Zeile 447 handelt es sich um eine AutoCompleteTextView, in der ich wohl nach meiner Methode keinen Text aus der Datenbank setzen kann:

final AutoCompleteTextView fldLand = (AutoCompleteTextView) findViewById(R.id.edt_laender);
fldLand.setText(belegbCursor.getString(belegbCursor.getColumnIndex(BelegeTbl.LAND)));

Da muß ich mir wohl was anderes überlegen, wie ich das lösen kann oder hast du oder jemand anderes vielleicht einen Tipp?


Liebe Grüße,

Tanja

Antworten
Gelöschter Account
  • Forum-Beiträge: 107

06.04.2011, 07:36:29 via Website

Entweder der AutoCompleteTextView ist nicht Bestandteil des Layouts, in dem du dich gerade befindest, weshalb fldLand == null ist oder belegbCursor ist nicht initialisiert, sprich == null ;)

— geändert am 06.04.2011, 07:36:59

Seid nett zueinander: AndroidPIT-Regeln ;)

Antworten
Tanja Z.
  • Forum-Beiträge: 52

06.04.2011, 13:43:43 via Website

Na klar wie einfach! Na, da hätte ich doch gleich selber mal drauf kommen können! Die View war falsch bezeichnet!: *)

Danke für deine Geduld!

Liebe Grüße, Tanja!

Antworten