1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. Duckemai, 14.01.2012 #1
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Hallo zusammen,

    ich kämpfe mal wieder mit einem OOP - Problem. Eigentlich simpel, es klappt aber trotzdem nicht.

    Ich habe in meiner Hauptklasse ein Objekt. (Genau genommen ist es für die Sprachausgabe ein Objekt:
    public TextToSpeech myTts;

    Wenn die Sprachausgabe läuft, dann möchte ich sie bei einem Anruf mittels BroadcastReceiver (in einer anderen Klasse) stoppen:
    if (hauptklasse.myTts != null) {
    hauptklasse.myTts.stop();
    }

    Aber wie greife ich nun auf dieses Objekt zu?

    Habe 2 Versuche gestartet:
    1. Hauptklasse hauptklasse= new Hauptklasse ();
    und
    2. Hauptklasse hauptklasse;

    Im ersten Fall erkennt er gar nicht, dass das Objekt befüllt ist, obwohl die Sprachausgabe läuft.
    Im 2ten Fall stürzt das Programm mit einer NullPointerException ab.

    Weiß jemand, wie ich es richtig machen muss?

    Vielen Dank!
     
  2. soma-web, 15.01.2012 #2
    soma-web

    soma-web App-Anbieter (kostenpfl.)

    Zuletzt bearbeitet: 15.01.2012
    Duckemai gefällt das.
  3. swordi, 15.01.2012 #3
    swordi

    swordi Gewerbliches Mitglied

    leider kann das so überhaupt nicht gehen.

    bei variante 1) erstellst du ein neues objekt. das heißt es ist ganz neu, wie das NEW schon sagt. also hast du ne neue instanz die nichts von der aktuellen sprachausgabe weiß.

    bei variante erstellst du nur die member variable, ohne irgendwas. der member zeigt im speicher genau nirgends hin => NullpointerException

    Du musst jetzt dein TTS objekt irgendwie global verfügbar machen. Das könntest du zB mit einer Singleton Klasse erreichen.

    im Receiver kannst du dann über dieses Singleton auf das TTS objekt zugreifen.
     
    Duckemai gefällt das.
  4. Duckemai, 15.01.2012 #4
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Singleton!!??

    Habe ich ja noch nie was von gehört. Aber eine globale Variable würde mir natürlich helfen. Wenn ich ein brauchbares Bsp für Android gefunden habe gebe ich noch mal Feedback.

    Danke!
     
  5. Duckemai, 15.01.2012 #5
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    Hey mensch, das geht !!!!!!!!!!!!! Danke! :lol:

    Verstehe zwar nicht wirklich, warum und was es bewirkt, einfach den Namen der Hauptklasse zu nehmen, aber es funktioniert.
     
  6. swordi, 15.01.2012 #6
    swordi

    swordi Gewerbliches Mitglied

    ich würde dir empfehlen dich mit den grundlagen auseinander zu setzen und zu verstehen, was du da tust.
     
  7. Duckemai, 15.01.2012 #7
    Duckemai

    Duckemai Threadstarter Erfahrener Benutzer

    @Swordi: Ach weißt Du, ich habe schon zig Bücher zum Thema OOP gelesen. Dann denke ich, jetzt hast Du es gerafft und ich komme gut mit OOP voran. Und plötzlich klappt es nicht, wo ich hätte schwören können, so muss es aber sein. Die Alternative wäre nun, mit dem Programmieren aufzuhören. Dafür macht es mir aber zu viel Spass. :rolleyes:

    Tschuldigung, wenn ich hier ab und an mal ziemlich unqualifizierte Fragen stelle. Programmiere halt so alleine vor mich hin. Wahrscheinlich fehlt mir mal zu diesem Thema ein fachlicher Austausch.

    Danke aber. Hast mir ja schon ein paar mal aus der Patsche geholfen.
     
  8. swordi, 15.01.2012 #8
    swordi

    swordi Gewerbliches Mitglied

    hmm wenn du mit dem begriff singleton nichts anfangen kannst, dann schau dich mal nach besseren büchern um :D
     
    the_alien gefällt das.
  9. wilco, 18.01.2012 #9
    wilco

    wilco Android-Hilfe.de Mitglied

    Hm. Muss jetzt gestehen trotz Informatikstudium und über einer Dekade Berufserfahrung ist mir der Begriff Singleton bisher auch noch nicht begegnet. Hoffe mir wird jetzt mein Diplom nicht wieder aberkannt... :crying:

    @Duckemai: Das ist einfach der Unterschied zwischen Klasse und Instanz einer Klasse. Die Klasse ist die Plätzchenform, die Instanz das Plätzchen das Du mit dieser Form stanzt.

    Du kannst Variablen auf Klassenebene definieren mit dem keyword "static". Dann kannst Du per Klasse.Variable auf diese Variable zugreifen. Die Variable hängt dann allerdings sozusagen an der Plätzchenform. Egal wieviele Plätzchen Du stanzt, static Variablen gibt es nur einmal. Wenn Du dann sagst Klasse.Variable ist somit eindeutig klar welche Variable Du meinst.

    Ohne das Wort static existiert eine Variable innerhalb der Klasseninstanz, also sozusagen innerhalb des Plätzchens. Und da es davon beliebig viele geben kann, musst Du um auf die Variable Zugreifen zu können erst mal auf die Klasseninstanz, das Plätzchen Zugriff haben.

    Das kannst Du z.B. so lösen:

    Code:
     
    Class MyClass  {
      Variable myVariable;
      NochneKlasse x;
     
      x = New NochneKlasse();
      x.myClass = this; //Damit übergibst Du einen Link auf die aktuelle Instanz Deiner Klasse MyClass an die x Instanz der Klasse NochneKlasse
    }
     
    Class NochneKlasse {
       MyClass myClass;
     
      //Jetzt kannst Du auf die Variable myVariable zugreifen per myClass.myVariable
    }
    
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Kleine Probleme mit einer App Android App Entwicklung 14.06.2017
[OFFEN] Problem mit meiner Login App Android App Entwicklung 10.06.2017
[OFFEN] git-Problem in Android Studio (Windows) Android App Entwicklung 24.05.2017
[ERLEDIGT] put in HashMap bringt App zum abstürzen Android App Entwicklung 22.05.2017
[ERLEDIGT] Problem mit Async Task und auszuführender Aufgabe Android App Entwicklung 02.05.2017
[OFFEN] Klick auf Marker soll ein zweites kleineres Layout anzeigen, Map soll trotzdem noch scrollbar (verwendbar) sein Android App Entwicklung 04.04.2017
[ERLEDIGT] Problem beim Starten einer neuen Activity Android App Entwicklung 21.03.2017
Excel Dokument mithilfe von JExcelAPI auslesen funktioniert nicht :/ Android App Entwicklung 02.03.2017
Notizen App problem Android App Entwicklung 11.01.2017
Text View erzeugt rendering Problem Android App Entwicklung 18.11.2016
Du betrachtest das Thema "kleines OOP - Problem" im Forum "Android App Entwicklung",