Micka
Fortgeschrittenes Mitglied
- 1
Hy,
ich mal wieder. Einige kennen mich evtl aus den vorherigen Threads zu Problemen mit meiner App.
Das neuste Problem tritt nun beim ändern eines Eintrags auf.
Um Eine Änderung zu realisieren hole ich mir aus der Datenbank die betreffenden Daten.
Nun möchte ich in meiner Eingabemaske die bisherigen Daten in die views laden.
Meine Eingabe Maske sieht wie folgt aus:
Spinner Spinner Spinner
TextView: EditText
TextView: EditText
oder eben in XML:
An der Stelle in meinem Code an der ich die Daten gerne in die Maske setzen möchte wird mir eine NullPointerException geschmissen.
Hier die Klasse:
und hier mein LogCat OutPut:
scheinbar kennt der Spinner das ihm im Layout zugeordnete Array noch nicht.
Was mach ich hier falsch?
ich mal wieder. Einige kennen mich evtl aus den vorherigen Threads zu Problemen mit meiner App.
Das neuste Problem tritt nun beim ändern eines Eintrags auf.
Um Eine Änderung zu realisieren hole ich mir aus der Datenbank die betreffenden Daten.
Nun möchte ich in meiner Eingabemaske die bisherigen Daten in die views laden.
Meine Eingabe Maske sieht wie folgt aus:
Spinner Spinner Spinner
TextView: EditText
TextView: EditText
oder eben in XML:
Code:
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- Datum -->
<TableRow>
<Spinner
android:id="@+id/aendern_datum_Tag"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/tag_anzeige"
android:entryValues="@array/tag_wert"
/>
<Spinner
android:id="@+id/aendern_datum_Monat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/monat_anzeige"
android:entryValues="@array/monat_wert"
/>
<Spinner
android:id="@+id/aendern_datum_Jahr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:entries="@array/jahr_anzeige"
android:entryValues="@array/jahr_wert"
/>
</TableRow>
<!-- Zweck -->
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Zweck:"
android:gravity="left"
android:maxWidth="15dp"/>
<EditText
android:id="@+id/aendern_zweck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text" >
<requestFocus />
</EditText>
</TableRow>
<!-- Betrag -->
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Betrag:"
/>
<EditText
android:id="@+id/aendern_betrag"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="number|numberSigned|numberDecimal"
/>
</TableRow>
<Button
android:id="@+id/button_aendern"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buttontxt_aendern"
android:onClick="onClickEintragSpeichern"
/>
</TableLayout>
Hier die Klasse:
Code:
package micka.haushaltsbuch;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Spinner;
public class EintragAendernActivity extends Activity
{
final static String MY_DB_NAME = "FinanzenDB";
static String MY_DB_TABLE = "eintraege";
final static String tag="ensacom";
long id;
SQLiteDatabase myDB = null;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.eintraghinzufuegenlayout);
myDB = null;
final Bundle extras = getIntent().getExtras();
if(extras != null)
{
MY_DB_TABLE = extras.getString(EintraegeAnzeigenActivity.TABELLENNAME);
id = extras.getLong(EintraegeAnzeigenActivity.ID);
}
Eintrag eintrag = null;
myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
Cursor eintragCursor = myDB.rawQuery("SELECT _id, day, month, year, wofuer, betrag FROM " + MY_DB_TABLE + " WHERE _id=" + id + " Order By day, month, year", null);
eintragCursor.moveToFirst();
if(eintragCursor.moveToFirst())
{
eintrag = null;
eintrag = new Eintrag(eintragCursor.getInt(0),eintragCursor.getInt(1),eintragCursor.getInt(2),eintragCursor.getInt(3),eintragCursor.getString(4),eintragCursor.getDouble(5));
}
eintragCursor.close();
myDB.close();
if(eintrag != null)
{
Log.v(tag, "Vor Edit Eintrag: " + eintrag.day + "." +eintrag.month +"." + eintrag.year +", " + eintrag.wofuer + ", " + eintrag.betrag + ", id=" + eintrag._id);
Spinner day = (Spinner)findViewById(R.id.aendern_datum_Tag);
[B]day.setSelection(eintrag.day); [U]//Zeile 48(Siehe LogCat)[/U][/B]
Spinner month = (Spinner)findViewById(R.id.aendern_datum_Monat);
month.setSelection(eintrag.month);
Spinner year = (Spinner)findViewById(R.id.aendern_datum_Jahr);
month.setSelection(eintrag.year);
EditText wofuer = (EditText)findViewById(R.id.aendern_zweck);
wofuer.setText(eintrag.wofuer);
EditText betrag = (EditText)findViewById(R.id.aendern_betrag);
wofuer.setText(String.valueOf(eintrag.betrag));
}
}
public void onClickEintragSpeichern(final View sfNormal)
{
...
}
}
Code:
01-16 15:08:45.962: E/AndroidRuntime(389): FATAL EXCEPTION: main
01-16 15:08:45.962: E/AndroidRuntime(389): java.lang.RuntimeException: Unable to start activity ComponentInfo{micka.haushaltsbuch/micka.haushaltsbuch.EintragAendernActivity}: java.lang.NullPointerException
01-16 15:08:45.962: E/AndroidRuntime(389): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-16 15:08:45.962: E/AndroidRuntime(389): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-16 15:08:45.962: E/AndroidRuntime(389): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-16 15:08:45.962: E/AndroidRuntime(389): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-16 15:08:45.962: E/AndroidRuntime(389): at android.os.Handler.dispatchMessage(Handler.java:99)
01-16 15:08:45.962: E/AndroidRuntime(389): at android.os.Looper.loop(Looper.java:123)
01-16 15:08:45.962: E/AndroidRuntime(389): at android.app.ActivityThread.main(ActivityThread.java:4627)
01-16 15:08:45.962: E/AndroidRuntime(389): at java.lang.reflect.Method.invokeNative(Native Method)
01-16 15:08:45.962: E/AndroidRuntime(389): at java.lang.reflect.Method.invoke(Method.java:521)
01-16 15:08:45.962: E/AndroidRuntime(389): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-16 15:08:45.962: E/AndroidRuntime(389): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-16 15:08:45.962: E/AndroidRuntime(389): at dalvik.system.NativeStart.main(Native Method)
01-16 15:08:45.962: E/AndroidRuntime(389): Caused by: java.lang.NullPointerException
[B]01-16 15:08:45.962: E/AndroidRuntime(389): at micka.haushaltsbuch.EintragAendernActivity.onCreate(EintragAendernActivity.java:48)[/B]
01-16 15:08:45.962: E/AndroidRuntime(389): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-16 15:08:45.962: E/AndroidRuntime(389): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-16 15:08:45.962: E/AndroidRuntime(389): ... 11 more
Was mach ich hier falsch?