Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Context?

Das Thema "Context?" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 12.11.2011, 18:21   #1 (permalink)
Fortgeschrittenes Mitglied
 
Benutzerbild von IceClaw

Modell: Galaxy Nexus

Registriert seit: 16.10.2010
Beiträge: 461
Abgegebene Danke: 25
Erhielt 110 Danke für 62 Beiträge
Standard Context?

Hi,

ich habe das mit dem Context nicht wirklich verstanden!

Wie kann ich z.B. einen Dialog, der in Activity B also Methode dargestellt wird, in Activity A anzeigen lassen?!

MfG Ice
__________________
Galaxy Nexus: Android 4.0.4 (ICS) - Stock
HP Touchpad: Android 4.0.4 (ICS) - CM9 Alpha 2.0 NIGHLTY (22.04.2012)
IceClaw ist offline   Mit Zitat antworten
Alt 12.11.2011, 20:32   #2 (permalink)
Android-Hilfe.de Mitglied

Modell: Acer Iconia A100

Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
Standard AW: Context?

Zitat:
Zitat von IceClaw Beitrag anzeigen
Hi,

ich habe das mit dem Context nicht wirklich verstanden!

Wie kann ich z.B. einen Dialog, der in Activity B also Methode dargestellt wird, in Activity A anzeigen lassen?!

MfG Ice
Du bräuchtest eine Referenz auf eine Instanz der Activity B. Nachdem aber der Lebenzyklus einer Activity vom ActivityManager gemanaged wird, glaub ich nicht daß das funktioniert. Du hast ja keinerlei Kontrolle wann Activity B instanziert wird oder zerstört wird.
Im übrigen:
Activities erben von Context. Deswegen ist 'this' innerhalb einer Activity die Referenz auf den Context.
Wieso schreibst Du Methoden, die von anderen Activities gebraucht werden, in eine Activity? Warum nicht in einer normalen, seperaten Klasse?
mradlmaier ist offline   Mit Zitat antworten
Alt 13.11.2011, 10:07   #3 (permalink)
Fortgeschrittenes Mitglied
 
Benutzerbild von IceClaw

Modell: Galaxy Nexus

Registriert seit: 16.10.2010
Beiträge: 461
Abgegebene Danke: 25
Erhielt 110 Danke für 62 Beiträge
Standard

Achso oO..

Achja, normale Klassen gibt es ja auch in Java :-P da kann ich also ganz normal einen Dialog schreiben und den dann in einer Activity anzeigen lassen?

Gruß

Gesendet mit der Android-Hilfe.de-App
__________________
Galaxy Nexus: Android 4.0.4 (ICS) - Stock
HP Touchpad: Android 4.0.4 (ICS) - CM9 Alpha 2.0 NIGHLTY (22.04.2012)
IceClaw ist offline   Mit Zitat antworten
Alt 13.11.2011, 15:18   #4 (permalink)
Android-Hilfe.de Mitglied

Modell: Acer Iconia A100

Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
Standard AW: Context?

Zitat:
Zitat von IceClaw Beitrag anzeigen
Achso oO..

Achja, normale Klassen gibt es ja auch in Java :-P da kann ich also ganz normal einen Dialog schreiben und den dann in einer Activity anzeigen lassen?

Gruß

Gesendet mit der Android-Hilfe.de-App
Eigentlich schon: aber Android unterstützt nicht alle Packages von Java SE, unter anderem nicht Swing und AWT. Meine Aussage bezieht sich darauf, dass Du typische Entwurfsmuster verwenden kannst, und eben auch normale Java Klassen. Da ja Android nicht Fenster unterstützt, musst Du für die GUI natürlich Views etc. verwenden. Es gibt auch einige Android-Klassen für dies kleinen, modalen Popups. Ich glaube Toasts werden diese genannt.

Guck Dir mal android.widget.PopupMenu an.

Geändert von mradlmaier (13.11.2011 um 15:31 Uhr)
mradlmaier ist offline   Mit Zitat antworten
Alt 14.11.2011, 07:05   #5 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: Context?

Du kannst den Dialog darstellen lassen, wenn die Methode static ist. Allerdings braucht jeder Dialog einen Context, den du der statischen Methoden übergeben müsstest. Dann würde in Activity B auch nicht mehr der this Operator in der statischen Methode funktionieren (was ja logisch ist).

Ich erstelle mir in meinen Apps in der Regel eine DialogFactory Klasse. Die beinhaltet nur statische Methoden und ich übergebe halt den Context. Dann kann man aus jeder Activity die Dialoge erzeugen.
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei v Ralle v für diesen Beitrag:
IceClaw (14.11.2011)
Alt 14.11.2011, 15:07   #6 (permalink)
Android-Hilfe.de Mitglied

Modell: Acer Iconia A100

Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
Standard AW: Context?

Zitat:
Zitat von v Ralle v Beitrag anzeigen
Du kannst den Dialog darstellen lassen, wenn die Methode static ist. Allerdings braucht jeder Dialog einen Context, den du der statischen Methoden übergeben müsstest. Dann würde in Activity B auch nicht mehr der this Operator in der statischen Methode funktionieren (was ja logisch ist).

Ich erstelle mir in meinen Apps in der Regel eine DialogFactory Klasse. Die beinhaltet nur statische Methoden und ich übergebe halt den Context. Dann kann man aus jeder Activity die Dialoge erzeugen.
Ralle, ich weiss nicht ob jeder hier versteht was ein Factory Entwurfsmuster ist. Veilleicht eine kurze Erläuterung?
mradlmaier ist offline   Mit Zitat antworten
Alt 14.11.2011, 16:06   #7 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: Context?

Ich habe nie von dem Pattern gesprochen. Nur weil meine Klasse "Factory" enthält ^^

Habe mal ein Beispiel erstellt, es handelt sich aber NICHT um das Factory Pattern! Ich packe in diese Klasse alle Dialoge um die Übersicht zu behalten und die Anzahl der Klassen klein zu halten.

Code:
public class SimpleDialogFactory {
	
	public static Dialog createSimpleExampleDialog(Context context) {
		return new AlertDialog.Builder(context).setTitle("Title").show();
	}

	public static void createExtendedExampleDialog(Context context) {
		new ExtendedDialog(context);
	}
	
	private static class ExtendedDialog extends AlertDialog.Builder {

		public ExtendedDialog(Context context) {
			super(context);
			
			setTitle("Title");
			setMessage("message");
			
			//more
			
			show();
		}
		
	}
}
Wenn ein Beispiel mit dem Pattern gewünscht ist, kann ich es gerne schreiben. Das dauert aber etwas länger. Inwieweit das richtige Pattern auch sinnvoll ist, ist ein andere Frage. Es würde sich beispielsweise anbieten, die Factory abstrakt zu erstellen und eine Instanz der Factory entsprechend der Android Version zu erstellen (was zur Laufzeit festgelegt wird). Diese Factory würde dann auch entsprechend der Android Version die Dialoge erstellen. Sinnfrei ist dieses Beispiel deshalb, weil Android sich selber darum kümmert mit den Layouts.

Ich hoffe ich konnte helfen =)
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Alt 14.11.2011, 16:37   #8 (permalink)
Fortgeschrittenes Mitglied
 
Benutzerbild von IceClaw

Modell: Galaxy Nexus

Registriert seit: 16.10.2010
Beiträge: 461
Abgegebene Danke: 25
Erhielt 110 Danke für 62 Beiträge
Standard AW: Context?

Haha

danke Ralle, deine erste Erklärung hat gereicht um es zu realisieren

MfG ice
__________________
Galaxy Nexus: Android 4.0.4 (ICS) - Stock
HP Touchpad: Android 4.0.4 (ICS) - CM9 Alpha 2.0 NIGHLTY (22.04.2012)
IceClaw ist offline   Mit Zitat antworten
Alt 14.11.2011, 19:12   #9 (permalink)
Android-Hilfe.de Mitglied

Modell: Acer Iconia A100

Registriert seit: 28.10.2011
Beiträge: 127
Abgegebene Danke: 15
Erhielt 13 Danke für 11 Beiträge
Standard AW: Context?

Zitat:
Zitat von v Ralle v Beitrag anzeigen
Ich habe nie von dem Pattern gesprochen. Nur weil meine Klasse "Factory" enthält ^^

Habe mal ein Beispiel erstellt, es handelt sich aber NICHT um das Factory Pattern! Ich packe in diese Klasse alle Dialoge um die Übersicht zu behalten und die Anzahl der Klassen klein zu halten.

Code:
public class SimpleDialogFactory {
	
	public static Dialog createSimpleExampleDialog(Context context) {
		return new AlertDialog.Builder(context).setTitle("Title").show();
	}

	public static void createExtendedExampleDialog(Context context) {
		new ExtendedDialog(context);
	}
	
	private static class ExtendedDialog extends AlertDialog.Builder {

		public ExtendedDialog(Context context) {
			super(context);
			
			setTitle("Title");
			setMessage("message");
			
			//more
			
			show();
		}
		
	}
}
Wenn ein Beispiel mit dem Pattern gewünscht ist, kann ich es gerne schreiben. Das dauert aber etwas länger. Inwieweit das richtige Pattern auch sinnvoll ist, ist ein andere Frage. Es würde sich beispielsweise anbieten, die Factory abstrakt zu erstellen und eine Instanz der Factory entsprechend der Android Version zu erstellen (was zur Laufzeit festgelegt wird). Diese Factory würde dann auch entsprechend der Android Version die Dialoge erstellen. Sinnfrei ist dieses Beispiel deshalb, weil Android sich selber darum kümmert mit den Layouts.

Ich hoffe ich konnte helfen =)
irgendwie nimmt ja dieser Thread eine seltsame Wendung....IceClaw wollte eine Erklärung des Contents haben... so jetzt sind wir bei Dialogen...
Ich hab da mal eine blöde Frage:
Welchen Vorteil hat es, das die Dialoge statisch sind? Wenn ich static richtig verstehe ist das für Klassenvariablen im Gegensatz zu Instanzvariablen? Was ist verkehrt daran innerhalb einer Activity, wenn diese einen Dialog aufbaut, dem Benutzer anzeigt und danach der Dialog zerstört wird?
Nur wegen der Übersicht und Anzahl der Klassen?

Geändert von mradlmaier (14.11.2011 um 19:15 Uhr)
mradlmaier ist offline   Mit Zitat antworten
Alt 14.11.2011, 20:31   #10 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: Context?

Du beschwerst dich, welche Wendung dieser Thread nimmt und fragst dann nach static

Aus Sicht der Objektorientierung ist static böse. Aber manchmal kommt man nicht drum herum oder es vereinfacht die Dinge. Wie in diesem Fall. Ich habe nur eine Klasse meines Styles gezeigt. Es brauch sich keiner angegriffen fühlen. Es führen viele Wege zum Ziel.

Der Vorteil hier ist, dass diese Dialoge aus jeder Klasse ausgerufen werden können, ohne eine Instanz von DialogFactory erzeugen zu müssen. Mir hilft es - wie gesagt - besonders bei der Übersicht. Natürlich kannst du auch in einer Activity eine Member Methode anlegen. Aber dann kannst du die Methode auch nur in der Activity aufrufen (oder du übergibst eine Instanz der Activity).

Das sind alles Design Aspekte und jeder hat einen verschiedenen Geschmack. Dies ist nur eine Variante.

Um nochmal auf die Ausgangsfrage zurück zu kommen: IceClaw wollte wissen, wie aus 2 Activity's den selben Dialog aufrufen kann, ohne den Code zu kopieren. Das habe ich gezeigt. Und wie gesagt, er könnte der zweiten Activity auch eine Instanz der ersten übergeben (sofern die erste die Methode für den Dialog beinhaltet), muss dann aber dem Dialog den Context der zweiten Activity übergeben, damit es sauber bleibt.
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Context-Menü on TableRow witschi87 Android App Entwicklung 13 19.10.2011 19:35
SQlite welchen Context mitgeben? Konga Android App Entwicklung 5 21.12.2010 16:38
Usability beim Context menü Raidri Android App Entwicklung 6 11.06.2010 11:28
SQLite Zugriff ohne Context mrdanger Android App Entwicklung 8 06.03.2010 16:38
options und context menu swordi Android App Entwicklung 2 03.07.2009 11:12




Du liest gerade: "Context?" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.