Problem mit onPause

J

Jacob91195

Neues Mitglied
0
Hallo,

ich bin grad an einer Spaß-App dran und habe ein Problem mit der onPause Methode. Immer wenn ich die App schließen will bekomme ich den Fehler, dass die App unerwartet geschlossen wurde(App stürzt ab).

Wo ist der Fehler?
Code:
package app.best.of.hakan;


import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.media.MediaPlayer;
import android.view.View;



public class StartingPoint extends Activity {
	Button lache, marius, uhh, uselmann, los,  gottlob;
	TextView display;
	MediaPlayer lacheMusic, mariusMusic, uhhMusic, uselmannMusic, losMusic, gottlobMusic;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        lache=(Button)findViewById(R.id.lache);
        marius=(Button)findViewById(R.id.marius);
        uhh =(Button) findViewById(R.id.uhh);
        uselmann=(Button) findViewById(R.id.uselmann);
        los=(Button) findViewById(R.id.los);
        gottlob=(Button) findViewById(R.id.gottlob);
;
        final MediaPlayer lacheMusic = MediaPlayer.create(this, R.raw.lache);
        final MediaPlayer mariusMusic = MediaPlayer.create(this, R.raw.marius);
        final MediaPlayer uhhMusic = MediaPlayer.create(this, R.raw.uhh);
        final MediaPlayer uselmannMusic = MediaPlayer.create(this, R.raw.uselmann);
        final MediaPlayer losMusic = MediaPlayer.create(this, R.raw.los);
        final MediaPlayer gottlobMusic = MediaPlayer.create(this, R.raw.gottlob);
        
    	

        lache.setOnClickListener(new View.OnClickListener() {
		
		public void onClick(View v) {
			
			lacheMusic.start();
			
			
		
			}
		
		});   
        marius.setOnClickListener(new View.OnClickListener() {
			
		public void onClick(View v) {
			
				mariusMusic.start();
		
			}
		});
        uhh.setOnClickListener(new View.OnClickListener() {
			
		public void onClick(View v) {
			
				uhhMusic.start();
				
			}
		});
        uselmann.setOnClickListener(new View.OnClickListener() {		
		public void onClick(View v) {
		
				uselmannMusic.start();
		}
		});
        los.setOnClickListener(new View.OnClickListener() {
			
		public void onClick(View v) {
			
				losMusic.start();
			
			}
		});
        gottlob.setOnClickListener(new View.OnClickListener() {
			
		public void onClick(View v) {
				gottlobMusic.start();
			
			}
		});
 
        
    }  
        
    
		@Override
	protected void onPause(){
  
		super.onPause();	
	
		lacheMusic.release();  
		mariusMusic.release();
		uhhMusic.release();
		uselmannMusic.release();
		losMusic.release();
		gottlobMusic.release();
			}	  
 
    }

Hoffe auf Hilfe
Mfg Jacob91195
 
wie schon zirka 10 000 000 mal hier gesagt,

wenn du die logcat ausgaben hier rein kopieren würde, würde man den fehler leichter finden.
 
swordi hat vollkommen recht, aber der Fehler ist offensichtlich genug für Schüsse aus der Hüfte:

In onPause wird auf die Instanzvariablen zugegriffen, in den OnClickListenern auf die lokalen Variablen vom onCreate. Die Instanzvariablen sind also nicht initialisiert.

Und: zu jedem onPause() gehört ein onResume().
 
Zuletzt bearbeitet:
mag sein, aber ohne logcat mach ich mir nicht mal die mühe mir da 50-100 zeilen code durch zu lesen.

der user möchte hilfe haben, dafür sollte es ein mindestmaß an entgegen kommen geben.

und meistens wissen die user nicht mal dass es logcat gibt, denn sonst hätte er den fehler selbst gefunden und müsste keinen thread öffnen. nach deiner antwort würde er logcat noch immer nicht kennen...
 
swordi schrieb:
nach deiner antwort würde er logcat noch immer nicht kennen...

Wenn deine Antwort nicht vorher gewesen wäre, hätte ich ihn schon auf logcat aufmerksam gemacht, keine Sorge :D
 
dann is gut :D

ich muss mir das glaub ich mal in die signatur schreiben.

"hier gibt es keine hilfe ohne logcat" oder sowas :D
 
Gute Idee! (Habs gleich eingebaut) :D

Aber leider sehen gerade die, die nicht ordentlich suchen, das erst, wenn man eine Antwort gibt.
 
jap stimmt auch wieder

dann bräuchte man ein plugin, welches mit einem knopfdruck noch ne antwort gibt ala "siehe signatur" :D
 
So hier das logcat:
Code:
12-01 18:13:42.772: E/AndroidRuntime(325): FATAL EXCEPTION: main
12-01 18:13:42.772: E/AndroidRuntime(325): java.lang.RuntimeException: Unable to pause activity {app.best.of.hakan/app.best.of.hakan.StartingPoint}: java.lang.NullPointerException
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2354)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2311)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2291)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.app.ActivityThread.access$1700(ActivityThread.java:117)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:938)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.os.Handler.dispatchMessage(Handler.java:99)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.os.Looper.loop(Looper.java:123)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.app.ActivityThread.main(ActivityThread.java:3683)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at java.lang.reflect.Method.invokeNative(Native Method)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at java.lang.reflect.Method.invoke(Method.java:507)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at dalvik.system.NativeStart.main(Native Method)
12-01 18:13:42.772: E/AndroidRuntime(325): Caused by: java.lang.NullPointerException
12-01 18:13:42.772: E/AndroidRuntime(325): 	at app.best.of.hakan.StartingPoint.onPause(StartingPoint.java:94)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.app.Activity.performPause(Activity.java:3851)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1191)
12-01 18:13:42.772: E/AndroidRuntime(325): 	at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2341)
12-01 18:13:42.772: E/AndroidRuntime(325): 	... 12 more

Da ich noch nicht so der Android Dev. Pro bin, wollte ich fragen wie ich das Problem lösen könnte.

Mfg Jacob91195
 
Schön, dass du das Logcat gefunden hast.

Jetzt lies dir erstmal die Antworten auf deine Frage durch. :D
 
Habe ich getan, ich hab auch versucht das Problem zu fixen.
1.Ansatz: Ich habe die Mediaplayer create Teile außerhalb von onCreate geschrieben(oberhalb) und die Mediaplayer im oberen Abschnitt gelöscht => App stürtzt ab
2.Ansatz: Ich habe versucht die Mediaplayer auf public zu setzten => bekomme nen Fehler

Da ich leider sonst keine Lösung finde hab ich noch einmal gefragt ...

MfG Jacob91195
 
java grundkurs 1 :D
 
Ich sag ja, dass ich nicht der android/java dev. pro bin ;)
 
Jacob91195 schrieb:
Ich sag ja, dass ich nicht der android/java dev. pro bin ;)

Das haben wir auch so gemerkt :D:D

wieder kein Logcat. *facepalm* und tschüß
 
Mobb mich nicht -.- ;)


Logcat:
Code:
12-03 11:23:26.475: E/AndroidRuntime(334): FATAL EXCEPTION: main
12-03 11:23:26.475: E/AndroidRuntime(334): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{app.best.of.hakan/app.best.of.hakan.StartingPoint}: java.lang.NullPointerException
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.app.ActivityThread.access$1500(ActivityThread.java:117)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.os.Handler.dispatchMessage(Handler.java:99)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.os.Looper.loop(Looper.java:123)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.app.ActivityThread.main(ActivityThread.java:3683)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at java.lang.reflect.Method.invokeNative(Native Method)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at java.lang.reflect.Method.invoke(Method.java:507)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at dalvik.system.NativeStart.main(Native Method)
12-03 11:23:26.475: E/AndroidRuntime(334): Caused by: java.lang.NullPointerException
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.content.ContextWrapper.getResources(ContextWrapper.java:80)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.media.MediaPlayer.create(MediaPlayer.java:662)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at app.best.of.hakan.StartingPoint.<init>(StartingPoint.java:16)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at java.lang.Class.newInstanceImpl(Native Method)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at java.lang.Class.newInstance(Class.java:1409)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
12-03 11:23:26.475: E/AndroidRuntime(334): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561)
12-03 11:23:26.475: E/AndroidRuntime(334): 	... 11 more
Und Source Code:
Code:
package app.best.of.hakan;


import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.media.MediaPlayer;
import android.view.View;



public class StartingPoint extends Activity {
	Button lache, marius, uhh, uselmann, los,  gottlob;
	TextView display;
	MediaPlayer lacheMusic = MediaPlayer.create(this, R.raw.lache);
    MediaPlayer mariusMusic = MediaPlayer.create(this, R.raw.marius);
    MediaPlayer uhhMusic = MediaPlayer.create(this, R.raw.uhh);
    MediaPlayer uselmannMusic = MediaPlayer.create(this, R.raw.uselmann);
    MediaPlayer losMusic = MediaPlayer.create(this, R.raw.los);
    MediaPlayer gottlobMusic = MediaPlayer.create(this, R.raw.gottlob);
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        lache=(Button)findViewById(R.id.lache);
        marius=(Button)findViewById(R.id.marius);
        uhh =(Button) findViewById(R.id.uhh);
        uselmann=(Button) findViewById(R.id.uselmann);
        los=(Button) findViewById(R.id.los);
        gottlob=(Button) findViewById(R.id.gottlob);
        
        
    	

        lache.setOnClickListener(new View.OnClickListener() {
		
		public void onClick(View v) {
			
			lacheMusic.start();
			
			
		
			}
		
		});   
        marius.setOnClickListener(new View.OnClickListener() {
			
		public void onClick(View v) {
			
				mariusMusic.start();
		
			}
		});
        uhh.setOnClickListener(new View.OnClickListener() {
			
		public void onClick(View v) {
			
				uhhMusic.start();
				
			}
		});
        uselmann.setOnClickListener(new View.OnClickListener() {		
		public void onClick(View v) {
		
				uselmannMusic.start();
		}
		});
        los.setOnClickListener(new View.OnClickListener() {
			
		public void onClick(View v) {
			
				losMusic.start();
			
			}
		});
        gottlob.setOnClickListener(new View.OnClickListener() {
			
		public void onClick(View v) {
				gottlobMusic.start();
			
			}
		});
 
        
    }  
    @Override
	protected void onPause(){
  
		super.onPause();
		
	
		lacheMusic.release();  
		mariusMusic.release();
		uhhMusic.release();
		uselmannMusic.release();
		losMusic.release();
		gottlobMusic.release();
			}	  
      
    	@Override
    protected void onResume(){
    	super.onResume();	
    		
    	}

   

    	
     	
    }
 
endlich macht mal einer ein soundboard für den market :)
 
wenn sie nicht funktioniert, bringt sie auch nigs -.-
 
LOL

schade
 
genau deshalb hab ich hier um Hilfe gefragt.... zu DieGoldeneMitte schau!
 
Guck die die Zeile an, die die NPE auslöst:

Code:
Caused by: java.lang.NullPointerException
...
     at app.best.of.hakan.StartingPoint.<init>(StartingPoint.java:16)
Du benutzt "this" hier sehr früh. Zu früh. Wenn du auf Resourcen zugreifen willst, geht das nur, wenn die Activity "bereit" dazu ist. Und das ist sie noch nicht, wenn du (bzw Android) noch nichtmal den Konstruktor aufgerufen hast.

Regel: Zugriff auf Resourcen erst in oder nach onCreate(). Und wenn es view Resourcen sind, die man erst per setContentView() mit der Acxtivity verbindet, dann erst nach eben diesem Aufruf.
 

Ähnliche Themen

S
Antworten
4
Aufrufe
955
Sempervivum
S
B
Antworten
4
Aufrufe
430
bb321
B
R
Antworten
3
Aufrufe
1.571
Ritartet
R
Zurück
Oben Unten