MediaPlayer immer null

  • Antworten:4
  • Bentwortet
Marvin S.
  • Forum-Beiträge: 10

18.05.2013, 19:33:23 via Website

Hallo Leute,

ich versuche verzweifelt seit einigen Stunden ein Problem zu lösen und stehe echt auf dem Schlauch.
Ich hoffe jemand kann mir einen Tipp geben warum es nicht funktioniert.

Ich möchte aus meiner Dialog Klasse heraus, mit einer Methode die ich in der MainActivity habe, einen MediaPlayer stoppen den ich in meiner MainActivity deklariert habe.

Ich habe meinen MediaPlayer in der OnCreate Methode wie folgt erstellt:
1mp = MediaPlayer.create(this, R.raw.alarm);

Meine Methode, in meiner MainActivity, sieht so aus:
1Public void setAlarmAus(){
2 this.mp.stop();
3 }

Nun möchte ich die Methode aus meiner Dialog Klasse mit folgendem Code aufrufen:
1MainActivity ma = new MainActivity();
2 ma.setAlarmAus();

Allerdings bekomme ich beim letzteren immer eine NullPointerException weil der MediaPlayer (mp) null ist.
Ich bin noch recht neu in der Programmierung und hoffe das mir jemand erklären kann warum genau das nicht funktioniert.

Ich danke im voraus

Antworten
impjor
  • Forum-Beiträge: 1.793

18.05.2013, 22:01:48 via App

Wo habt ihr nur alle das MainActivity ma = new MainActivity() her??? Damit erzeugst du ein NEUES Objekt der Klasse MainActivity, was total sinnlos ist, da du sicher auf die "aktuelle" MainActivity via this zu greifen möchtest. Da du das aber in einer inneren Klasse machst, ist this der Verweis auf die innere Klasse, verwende daher MainActivity.this
Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Marvin S.

Antworten
Marvin S.
  • Forum-Beiträge: 10

18.05.2013, 22:46:16 via Website

Danke für deine Antwort!

Ich habe das mit der Instanziierung weggelassen. Ich verstehe nicht genau was du mit der inneren Klasse meinst..
Ich verstehe darunter sowas:
1class Haus
2{
3 class Zimmer
4 {
5 }
6}
Allerdings liegt sowas bei mir nicht vor. Ich habe zwei unterschiedliche Klassen, meine MainActivity und meine Dialog Klasse. Meine Methode steht allerdings in der MainActivity und soll aus der Dialog Klasse aufgerufen werden. Ich habe bereits versucht aus der Dialog Klasse die MainActivity zu erben um die Methode "setAlarmAus()" zu überschreiben, wo ich aber immer noch den Wert null für meinen MediaPlayer bekomme. Wenn ich den MediaPlayer innerhalb der MainActivity stoppe, wo er auch erstellt wurde, klappt es.

Antworten
impjor
  • Forum-Beiträge: 1.793

18.05.2013, 22:50:37 via App

Wie gesagt, _keine_ neue Instanz der MainActivity erstellen. Mache z.B. sowas: Deine Dialog - Klasse mit Konstruktor der so aussieht
public DislogKlasse(MainActivity ma) {
//Speichern der MainActivity
}

Dann hast du dein MainActivity - Objekt.

Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Marvin S.

Antworten
Marvin S.
  • Forum-Beiträge: 10

18.05.2013, 23:01:39 via Website

Vielen Dank!
Hat so geklappt :)

Antworten