Java App-Crash bei "SetOnClickListener" - Android Programming (Java)

TheShooter

Lt. Junior Grade
Registriert
Juni 2011
Beiträge
370
Hallo,
ich versuche mich gerade daran eine App für Android zu programmieren. Ich möchte gerne über eine Schaltfläche von einer Seite zur anderen wechseln. Nur macht mir der "SetOnClickListener" Probleme. Mein Code sieht folgendermaßen aus:

Code:
public class MainActivity extends ActionBarActivity implements OnClickListener {
	
	Button btn1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
        
        btn1 = (Button)findViewById(R.id.start_button);
        btn1.setOnClickListener(this);
    }

[...]

 @Override
	public void onClick(View v) {
		
		startActivity(new Intent(this,Seite2.class));
	}

Das kompiliert auch ohne Probleme, nur crasht die App dann sofort im Emulator.
Die Fehlermeldungen sehen so aus:

Code:
05-24 14:08:55.973: D/AndroidRuntime(1398): Shutting down VM
05-24 14:08:55.973: W/dalvikvm(1398): threadid=1: thread exiting with uncaught exception (group=0xb1abcba8)
05-24 14:08:55.983: E/AndroidRuntime(1398): FATAL EXCEPTION: main
05-24 14:08:55.983: E/AndroidRuntime(1398): Process: com.Stucke.saveenergy, PID: 1398
05-24 14:08:55.983: E/AndroidRuntime(1398): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Stucke.saveenergy/com.Stucke.saveenergy.MainActivity}: java.lang.NullPointerException
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at android.app.ActivityThread.access$800(ActivityThread.java:135)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at android.os.Handler.dispatchMessage(Handler.java:102)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at android.os.Looper.loop(Looper.java:136)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at android.app.ActivityThread.main(ActivityThread.java:5017)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at java.lang.reflect.Method.invokeNative(Native Method)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at java.lang.reflect.Method.invoke(Method.java:515)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at dalvik.system.NativeStart.main(Native Method)
05-24 14:08:55.983: E/AndroidRuntime(1398): Caused by: java.lang.NullPointerException
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at com.Stucke.saveenergy.MainActivity.onCreate(MainActivity.java:31)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at android.app.Activity.performCreate(Activity.java:5231)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
05-24 14:08:55.983: E/AndroidRuntime(1398): 	... 11 more
05-24 14:08:58.713: I/Process(1398): Sending signal. PID: 1398 SIG: 9

Ein NullPointerException also... Wird die richtige id nicht gefunden, oder woran liegt das?

Wäre dankbar für Hilfe!

Beste Grüße,
TheShooter
 
Kenne mich mit Android nicht aus aber grundsätzlich gilt:
Debuggen, Breakpoint setzen und durch steppen um zu sehen was genau null ist. Sicher das die if Abfrage nicht != null sein sollte?
 
Also der Debugger liefert mir zurück, dass mein btn1 = null ist. Warum ist das so?
 
Ich habe jetzt einfach diesen Code auskommentiert:
Code:
if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }

Nun scheint es zu funktionieren. Sehr komisch. Trotzdem danke für die Hilfe!
 
Zurück
Oben