Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

NullPointerException

Das Thema "NullPointerException" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 16.01.2012, 16:28   #1 (permalink)
Junior Mitglied
 
Benutzerbild von Micka

Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
Ausrufezeichen NullPointerException

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:
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>
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:
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);
             day.setSelection(eintrag.day); //Zeile 48(Siehe LogCat)
             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) 
    {
        ...
    }
}
und hier mein LogCat OutPut:
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
01-16 15:08:45.962: E/AndroidRuntime(389):     at micka.haushaltsbuch.EintragAendernActivity.onCreate(EintragAendernActivity.java:48)
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
scheinbar kennt der Spinner das ihm im Layout zugeordnete Array noch nicht.

Was mach ich hier falsch?
Micka ist offline   Mit Zitat antworten
Alt 17.01.2012, 15:39   #2 (permalink)
Junior Mitglied
 
Benutzerbild von Micka

Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
Standard AW: NullPointerException

Mir ist gerade aufgefallen das ich im onCreate ein falsches Layout angegeben habe. Dies habe ich dann eben korrigiert so dass setContentview auch wirklich das Layout bekommt, dass ich euch schon gepostet habe.

Seit dieser kleinen Änderung sieht der LogCatOutPut wie folgt aus.
Zitat:
01-17 15:22:57.226: E/AndroidRuntime(13626): FATAL EXCEPTION: main
01-17 15:22:57.226: E/AndroidRuntime(13626): java.lang.IndexOutOfBoundsException
01-17 15:22:57.226: E/AndroidRuntime(13626): at java.util.Arrays$ArrayList.get(Arrays.java:77)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.ArrayAdapter.getItem(ArrayAdapter.j ava:298)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.ArrayAdapter.createViewFromResource (ArrayAdapter.java:351)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.ArrayAdapter.getView(ArrayAdapter.j ava:323)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.Spinner.makeAndAddView(Spinner.java :189)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.Spinner.layout(Spinner.java:148)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.Spinner.onLayout(Spinner.java:112)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.view.View.layout(View.java:7034)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.LinearLayout.setChildFrame(LinearLa yout.java:1249)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.LinearLayout.layoutHorizontal(Linea rLayout.java:1238)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.TableRow.onLayout(TableRow.java:121 )
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.view.View.layout(View.java:7034)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.LinearLayout.setChildFrame(LinearLa yout.java:1249)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.LinearLayout.layoutVertical(LinearL ayout.java:1125)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.TableLayout.onLayout(TableLayout.ja va:437)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.view.View.layout(View.java:7034)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.FrameLayout.onLayout(FrameLayout.ja va:333)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.view.View.layout(View.java:7034)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.LinearLayout.setChildFrame(LinearLa yout.java:1249)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.LinearLayout.layoutVertical(LinearL ayout.java:1125)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.LinearLayout.onLayout(LinearLayout. java:1042)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.view.View.layout(View.java:7034)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.widget.FrameLayout.onLayout(FrameLayout.ja va:333)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.view.View.layout(View.java:7034)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.view.ViewRoot.performTraversals(ViewRoot.j ava:1049)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.view.ViewRoot.handleMessage(ViewRoot.java: 1744)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.os.Handler.dispatchMessage(Handler.java:99 )
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.os.Looper.loop(Looper.java:144)
01-17 15:22:57.226: E/AndroidRuntime(13626): at android.app.ActivityThread.main(ActivityThread.jav a:4937)
01-17 15:22:57.226: E/AndroidRuntime(13626): at java.lang.reflect.Method.invokeNative(Native Method)
01-17 15:22:57.226: E/AndroidRuntime(13626): at java.lang.reflect.Method.invoke(Method.java:521)
01-17 15:22:57.226: E/AndroidRuntime(13626): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:858)
01-17 15:22:57.226: E/AndroidRuntime(13626): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:616)
01-17 15:22:57.226: E/AndroidRuntime(13626): at dalvik.system.NativeStart.main(Native Method)
Viel weiter als vorher komme ich damit aber leider auch nicht. Sieht jemand wo das Problem liegt?
Micka ist offline   Mit Zitat antworten
Alt 17.01.2012, 16:24   #3 (permalink)
Android Guru

Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus

Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
Standard AW: NullPointerException

Es wird auf einen Index des Arrays zugegriffen der nicht existiert. Also würde ich mal die Arrays die du in der XML angibst checken.
__________________
Follow/Add/Circle/Whatever me on Google+

Solitaire HD, ein Solitaire optimiert für Honeycomb.
the_alien ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei the_alien für diesen Beitrag:
Micka (17.01.2012)
Alt 17.01.2012, 17:37   #4 (permalink)
Junior Mitglied
 
Benutzerbild von Micka

Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
Standard AW: NullPointerException

Das im Layout verwendete Array ist das gleiche wie das fürs erstellen. Es existieren 31 Items. Sollte passen. Poste gleich mal die Arrays.xml wenn ich am Rechner bin.
Micka ist offline   Mit Zitat antworten
Alt 17.01.2012, 18:19   #5 (permalink)
Junior Mitglied
 
Benutzerbild von Micka

Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
Standard AW: NullPointerException

hier mal die Arrays.xml: Ich hänge mal das komplette Project an, vielleicht liegt der Fehler ja ganz woanders.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <array name="tag_anzeige">
        <item>"01"</item>
          <item>"02"</item>
          <item>"03"</item>
          <item>"04"</item>
          <item>"05"</item>
          <item>"06"</item>
          <item>"07"</item>
          <item>"08"</item>
          <item>"09"</item>
          <item>"10"</item>
          <item>"11"</item>
          <item>"12"</item>
          <item>"13"</item>
          <item>"14"</item>
          <item>"15"</item>
          <item>"16"</item>
          <item>"17"</item>
          <item>"18"</item>
          <item>"19"</item>
          <item>"20"</item>
          <item>"21"</item>
          <item>"22"</item>
          <item>"23"</item>
          <item>"24"</item>
          <item>"25"</item>
          <item>"26"</item>
          <item>"27"</item>
          <item>"28"</item>
          <item>"29"</item>
          <item>"30"</item>
          <item>"31"</item>
      </array>
      <array name="tag_wert">
        <item>01</item>
          <item>02</item>
          <item>03</item>
          <item>04</item>
          <item>05</item>
          <item>06</item>
          <item>07</item>
          <item>08</item>
          <item>09</item>
          <item>10</item>
          <item>11</item>
          <item>12</item>
          <item>13</item>
          <item>14</item>
          <item>15</item>
          <item>16</item>
          <item>17</item>
          <item>18</item>
          <item>19</item>
          <item>20</item>
          <item>21</item>
          <item>22</item>
          <item>23</item>
          <item>24</item>
          <item>25</item>
          <item>26</item>
          <item>27</item>
          <item>28</item>
          <item>29</item>
          <item>30</item>
          <item>31</item>
      </array>
      <array name="monat_anzeige">
          <item>"01"</item>
          <item>"02"</item>
          <item>"03"</item>
          <item>"04"</item>
          <item>"05"</item>
          <item>"06"</item>
          <item>"07"</item>
          <item>"08"</item>
          <item>"09"</item>
          <item>"10"</item>
          <item>"11"</item>
          <item>"12"</item>
    </array>
    <array name="monat_wert">
          <item>01</item>
          <item>02</item>
          <item>03</item>
          <item>04</item>
          <item>05</item>
          <item>06</item>
          <item>07</item>
          <item>08</item>
          <item>09</item>
          <item>10</item>
          <item>11</item>
          <item>12</item>
    </array>
    <array name="jahr_anzeige">
        <item>"2011"</item>
        <item>"2012"</item>
        <item>"2013"</item>
        <item>"2014"</item>
        <item>"2015"</item>
        <item>"2016"</item>
        <item>"2017"</item>
        <item>"2018"</item>
        <item>"2019"</item>
        <item>"2020"</item>
        <item>"2021"</item>
        <item>"2022"</item>
        <item>"2023"</item>
        <item>"2024"</item>
        <item>"2025"</item>
        <item>"2026"</item>
        <item>"2027"</item>
        <item>"2028"</item>
        <item>"2029"</item>
        <item>"2030"</item>
    </array>
    <array name="jahr_wert">
        <item>2011</item>
        <item>2012</item>
        <item>2013</item>
        <item>2014</item>
        <item>2015</item>
        <item>2016</item>
        <item>2017</item>
        <item>2018</item>
        <item>2019</item>
        <item>2020</item>
        <item>2021</item>
        <item>2022</item>
        <item>2023</item>
        <item>2024</item>
        <item>2025</item>
        <item>2026</item>
        <item>2027</item>
        <item>2028</item>
        <item>2029</item>
        <item>2030</item>
    </array>
</resources>
Angehängte Dateien
Dateityp: zip Haushaltsbuch.zip (105,0 KB, 6x aufgerufen)
Micka ist offline   Mit Zitat antworten
Alt 18.01.2012, 07:22   #6 (permalink)
Android Experte

Registriert seit: 24.01.2011
Beiträge: 637
Abgegebene Danke: 5
Erhielt 572 Danke für 228 Beiträge
Standard

Kann mir jetzt nicht den Code genau anschauen, aber was spricht eigentlich gegen die Verwendung eines DatePickers?

Sent from my Defy
maniac103 ist offline   Mit Zitat antworten
Alt 18.01.2012, 07:43   #7 (permalink)
Junior Mitglied
 
Benutzerbild von Micka

Registriert seit: 30.12.2011
Beiträge: 43
Abgegebene Danke: 17
Erhielt 0 Danke für 0 Beiträge
Standard AW: NullPointerException

Eigentlich nichts, aber so müsste es ja auch gehen. Hab das Programm schonmal in Java geschrieben und da hab ichs halt so gemacht.
Micka ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Spinner.setAdapter wirft NullPointerException DavidD Android App Entwicklung 3 27.08.2011 14:56
mein Spinner wirft NullPointerException... need help rufux Android App Entwicklung 8 03.08.2011 12:26
TabHost NullpointerException -> Button einfügen zu TabHost Example Rotesmofa Android App Entwicklung 4 12.10.2010 14:11
NullPointerException ApplicationInfo.name FelixL Android App Entwicklung 1 29.08.2010 10:31
NullPointerException bei ArrayAdapter nithdi Android App Entwicklung 7 29.04.2010 22:58




Du liest gerade: "NullPointerException" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.