| |||||||
Das Thema "kleines OOP - Problem" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Erfahrener Benutzer Modell: HTC Legend Registriert seit: 05.04.2010
Beiträge: 205
Abgegebene Danke: 63
Erhielt 6 Danke für 6 Beiträge
| 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 (permalink) |
| Android-Hilfe.de Mitglied Registriert seit: 06.07.2011
Beiträge: 71
Abgegebene Danke: 14
Erhielt 7 Danke für 7 Beiträge
| Geändert von soma-web (15.01.2012 um 11:20 Uhr) |
| | |
| Folgender Benutzer bedankt sich bei soma-web für diesen Beitrag: | Duckemai (15.01.2012) |
| | #3 (permalink) | |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
| Zitat:
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.
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) | |
| | |
| Folgender Benutzer bedankt sich bei swordi für diesen Beitrag: | Duckemai (15.01.2012) |
| | #4 (permalink) |
| Erfahrener Benutzer Modell: HTC Legend Registriert seit: 05.04.2010
Beiträge: 205
Abgegebene Danke: 63
Erhielt 6 Danke für 6 Beiträge
|
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 (permalink) | |
| Erfahrener Benutzer Modell: HTC Legend Registriert seit: 05.04.2010
Beiträge: 205
Abgegebene Danke: 63
Erhielt 6 Danke für 6 Beiträge
| Zitat:
![]() Verstehe zwar nicht wirklich, warum und was es bewirkt, einfach den Namen der Hauptklasse zu nehmen, aber es funktioniert. | |
| | |
| | #6 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
ich würde dir empfehlen dich mit den grundlagen auseinander zu setzen und zu verstehen, was du da tust.
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) |
| | |
| | #7 (permalink) |
| Erfahrener Benutzer Modell: HTC Legend Registriert seit: 05.04.2010
Beiträge: 205
Abgegebene Danke: 63
Erhielt 6 Danke für 6 Beiträge
|
@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. ![]() 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 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
hmm wenn du mit dem begriff singleton nichts anfangen kannst, dann schau dich mal nach besseren büchern um
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) |
| | |
| Folgender Benutzer bedankt sich bei swordi für diesen Beitrag: | the_alien (16.01.2012) |
| | #9 (permalink) | |
| Android-Hilfe.de Mitglied Registriert seit: 10.08.2010
Beiträge: 97
Abgegebene Danke: 5
Erhielt 31 Danke für 24 Beiträge
| Zitat:
![]() @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
} | |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| kleines Problem -> Brick | knopper84 | Root / Hacking / Modding für Asus Eee Pad Transformer | 10 | 17.01.2012 17:12 |
| Kleines Problem | Fc Barcelona | Root / Hacking / Modding für LG Optimus Speed | 8 | 01.01.2012 22:46 |
| kleines problem | fineflaver | Sonstige Android-Tablets | 2 | 16.09.2011 18:01 |
| Kleines DLNA-Problem | maxlg | HTC Desire HD Forum | 3 | 01.02.2011 12:51 |
| kleines Problem. | farmer | Root / Hacking / Modding für T-Mobile G1 | 10 | 29.12.2009 19:51 |