java.lang.NullPointerException

Z

zauber3r

Erfahrenes Mitglied
23
hi,

ich finde den fehler nicht.

es soll erstmal ohne übergabe von variablen eine neue activity aufgerufen werden. warum kommt da:

Code:
07-23 17:36:25.882: W/dalvikvm(544): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
07-23 17:36:25.912: E/AndroidRuntime(544): FATAL EXCEPTION: main
07-23 17:36:25.912: E/AndroidRuntime(544): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.phpmysql/com.example.phpmysql.AuswahlActivity}: java.lang.NullPointerException
07-23 17:36:25.912: E/AndroidRuntime(544):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
07-23 17:36:25.912: E/AndroidRuntime(544):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
07-23 17:36:25.912: E/AndroidRuntime(544):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
07-23 17:36:25.912: E/AndroidRuntime(544):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
07-23 17:36:25.912: E/AndroidRuntime(544):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-23 17:36:25.912: E/AndroidRuntime(544):     at android.os.Looper.loop(Looper.java:137)
07-23 17:36:25.912: E/AndroidRuntime(544):     at android.app.ActivityThread.main(ActivityThread.java:4424)
07-23 17:36:25.912: E/AndroidRuntime(544):     at java.lang.reflect.Method.invokeNative(Native Method)
07-23 17:36:25.912: E/AndroidRuntime(544):     at java.lang.reflect.Method.invoke(Method.java:511)
07-23 17:36:25.912: E/AndroidRuntime(544):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-23 17:36:25.912: E/AndroidRuntime(544):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-23 17:36:25.912: E/AndroidRuntime(544):     at dalvik.system.NativeStart.main(Native Method)
07-23 17:36:25.912: E/AndroidRuntime(544): Caused by: java.lang.NullPointerException
07-23 17:36:25.912: E/AndroidRuntime(544):     at com.example.phpmysql.KstmenuActivity.onCreate(KstmenuActivity.java:50)
07-23 17:36:25.912: E/AndroidRuntime(544):     at com.example.phpmysql.AuswahlActivity.onCreate(AuswahlActivity.java:9)
07-23 17:36:25.912: E/AndroidRuntime(544):     at android.app.Activity.performCreate(Activity.java:4465)
07-23 17:36:25.912: E/AndroidRuntime(544):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
07-23 17:36:25.912: E/AndroidRuntime(544):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
07-23 17:36:25.912: E/AndroidRuntime(544):     ... 11 more

hier der code
KstmenuActivity.class
Code:
public void onClickAuswahl(View view){
        Intent myIntent = new Intent(KstmenuActivity.this, AuswahlActivity.class);
        KstmenuActivity.this.startActivity(myIntent);
       }
AuswahlActivity.class
Code:
public class AuswahlActivity extends KstmenuActivity {
       @Override 
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_auswahl);
       }
}
androidmanifest.xml
Code:
                        <activity
                android:name=".AuswahlActivity"
                android:label="Auswahl">
        </activity>
 
Der Code oben Funktioniert aber Tadellos solange ich nicht auf den Button clicke. Erst als ich den Button eingefügt und die neue activity trat der Fehler auf. Dort ist auch ein Spinner drin der Werte aus ner mysql holt, auch der funktioniert.

Der Fehler tritt erst beim clicken auf
 
07-23 17:36:25.912: E/AndroidRuntime(544): Caused by: java.lang.NullPointerException
07-23 17:36:25.912: E/AndroidRuntime(544): at com.example.phpmysql.KstmenuActivity.onCreate(KstmenuActivity.java:50)
07-23 17:36:25.912: E/AndroidRuntime(544): at com.example.phpmysql.AuswahlActivity.onCreate(AuswahlActivity.java:9)

das sieht aber deine App anders. ;)
 
Code:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_kstmenu);
        //Übergabe Nutzername
        
        Bundle zielkorb = getIntent().getExtras();
        username = zielkorb.getString("username");
        TextView tv = (TextView) findViewById(R.id.tvNutzer);
        tv.setText(username);
        Log.v(username, "Nutzer");

        spinnerKst = (Spinner) findViewById(R.id.spinKst);
                        
        categoriesList = new ArrayList<Category>();

        // spinner item select listener
        spinnerKst.setOnItemSelectedListener(this);

hier der betreffende part, sehe immernoch den fehler nicht.

und warum tritt der fehler er beim aufruf der neuen classe auf?
 
Code:
class AuswahlActivity extends KstmenuActivity

Code:
super.onCreate(savedInstanceState);

Daraus folgt:
Code:
07-23 17:36:25.912: E/AndroidRuntime(544): at com.example.phpmysql.KstmenuActivity.onCreate(KstmenuActivity.java:50)


D.h. du weißt was "extends" macht? Du weißt was "super" macht?
 
Code:
username = zielkorb.getString("username");
ist vermutlich Zeile 50.

Code:
getIntent().getExtras()
ist null, weil keine Extra übergeben wird.
 
Zuletzt bearbeitet:
wenn ich ehrlich bin weiß ich das noch nicht, blutiger anfänger eben... werde mir das kurzfristig anschauen.


und ja , das ist die 50. zeile. was daran ein crash verursacht weiß ich nicht, er nutzt die variable korrekt in derkstmenuactivity...
 
getIntent().getExtras() ist null, weil keine Extra übergeben wird.
 
Code:
Intent myIntent = new Intent(KstmenuActivity.this, AuswahlActivity.class);
KstmenuActivity.this.startActivity(myIntent);
ist nicht vollständig. Es fehlt die Übergabe des Bundle.

Beispiel:

Code:
[I]Bundle korb = new Bundle();
korb.putString("datenpaket1", text);[/I]
Intent myIntent = new Intent(KstmenuActivity.this, AuswahlActivity.class);

[I]myIntent.putExtras(korb);[/I]

KstmenuActivity.this.startActivity(myIntent);
Da Du kein Bundle übergibst, ist getIntent().getExtras() null. Und das führt in der nächsten Zeile zum NullPointerException.
 
An die Auswahl activity wollte ich auch erstmal nichts übergeben. Das bundle oben ist der Empfang von der vorherigen activity. Irgendwie bin ich durcheinander..
 
Lies meinen Beitrag auf Seite 1 nochmal durch, google was du da überhaupt machst ...

Deine Auswahlactivity "extends" deine Kstmenu und du rufst sogar noch explizit in der Oncreate deiner Auswahlactivity über "super" die onCreate der Kstmenu ... und da dementsprechend kein Bundle vorhanden ist, fliegt dir das Ding um die Ohren.

Also nochmals, Grundlagen erarbeiten (mir egal ob das nur ein schneller Prototyp sein soll oder sonstwas, so wie dus im anderen Thread von dir gemeint hast) und in Erfahrung bringen was du da aktuell überhaupt zusammenkopierst ...
 
Die Frage, die du dir stellen solltest,, ist:
Warum erbt Deine zweite Activity (AuswahlActivity) von der ersten Activity (KstmenuActivity).

Das macht hier eigentlich kein Sinn.

Es scheint, du hast ein wichtiges Element der objektorientierten Programmierung angewandt, ohne es verstanden zu haben.

Galileo Computing :: Java ist auch eine Insel – 5.8 Vererbung
 

Ähnliche Themen

S
Antworten
15
Aufrufe
3.855
amfa
A
Zurück
Oben Unten