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

Zugriff einer static Klasse auf Intent

Das Thema "Zugriff einer static Klasse auf Intent" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 27.10.2011, 06:04   #1 (permalink)
Neuer Benutzer

Registriert seit: 24.10.2011
Beiträge: 12
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
Standard Zugriff einer static Klasse auf Intent

Hallo!

Ich versuche mich gerade an einem Spiel und bin am verzweifeln:

Ich habe eine Klasse spiel erstellt, welche alle Einstellungen des Spiels enthält.
Code:
 
public
class spiel extends Activity { ... int gesundheit; int geld;
public void lebenminus() {
gesundheit--;
if (gesundheit==0) {
Intent intent = new Intent(spiel.this, Verloren.class); startActivity(intent);
} }
public spiel() {
geld=300;
gesundheit=1; } }
Um darauf zugreifen zu können habe ich in der Activity wo man auf einen Button "Neues Spiel" klickt folgendes gemacht´:

Code:
 
public class Start extends Activity { public static spiel s;
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.start);
Button spielstarten1 = (Button) findViewById(R.id.spielstarten); spielstarten1.setOnClickListener(new OnClickListener() {
public void onClick(View v) { s=new spiel(); Intent intent = new Intent(Start.this, Hauptscreen.class);
startActivity(intent);
finish(); } }); } }
Somit kann ich von jeder Activity aus über Start.s.gesundheit den Gesundheitswert abfragen.

Mein Problem ist nun: Wenn der Spieler stirbt (Gesundheit=0) soll ein Verloren-Bildschirm angezeigt werden. Ich nutze hierzu die Funktion lebenminus der Spiel-Klasse. Das Programm soll einen Gesundheitspunkt abziehen und wenn Gesundheit=0=tot die Verloren-Activity anzeigen. Dies funktioniert nicht und ich komme nicht dahinter warum das so ist.

Sobald das Intent erstellt wird stürzt das Spiel ab.

Gruß,

Alex

Geändert von AlexL1980 (27.10.2011 um 06:08 Uhr)
AlexL1980 ist offline   Mit Zitat antworten
Alt 27.10.2011, 08:12   #2 (permalink)
Android-Hilfe.de Mitglied

Modell: Motorola Atrix 4G

Registriert seit: 07.12.2010
Beiträge: 170
Abgegebene Danke: 14
Erhielt 32 Danke für 31 Beiträge
Neeldarax eine Nachricht über ICQ schicken
Standard AW: Zugriff einer static Klasse auf Intent

Hallo Alex,

Logcat wäre wie immer hilfreich

Und zweitens.. hä? ^^

Deine Klasse Spiel ist eine Activity. Activitys werden NICHT mit Kontruktoren instanziert!

  1. Entweder du machst aus Spiel eine normale Klasse und für startIntent(..) bastelst du dir was, was mit den aktuellen Context deiner aktiven Activity arbeitet.
  2. Oder du behälst die Vererbung, muss dir dann aber was basteln, was ohne den Konstruktor arbeitet.
Sollte als Denkansatz reichen Frag ruhig, wenn du nicht weiter kommst.. aber erst ma Logcat.

regards
__________________
g o o g l e+ plus.neeldarax.de
androidblog www.neeldarax.de
Neeldarax ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei Neeldarax für diesen Beitrag:
AlexL1980 (29.10.2011)
Alt 27.10.2011, 11:10   #3 (permalink)
Android Guru
 
Benutzerbild von Fr4gg0r

Modell: Samsung Galaxy S (I9000)

Registriert seit: 21.12.2009
Beiträge: 2.572
Abgegebene Danke: 76
Erhielt 506 Danke für 295 Beiträge
Standard AW: Zugriff einer static Klasse auf Intent

der Konstruktor sollte vor onCreate() aufgerufen werden
Fr4gg0r ist offline   Mit Zitat antworten
Alt 27.10.2011, 20:33   #4 (permalink)
Neuer Benutzer

Registriert seit: 24.10.2011
Beiträge: 12
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
Standard AW: Zugriff einer static Klasse auf Intent

@Fr4gg0r: Das Spiel sollte aber immer neu initialisiert werden, wenn auf Neues Spiel geklickt wird. Wenn ich das vor oncreate() mach, dann werden die Werte nicht zurückgesetzt.

@Neeldarax:

Ich kann mir gut vorstellen, wie verwunderlich mein Code für einen Nicht-Laien ist

1. Was ist LogCat? Ich habe im Debugger ein Fenster was so heißt... da kommen immer diese Meldungen (onSignalStrenghtChange, usw.). Meinst Du das?

Zitat:
1. Entweder du machst aus Spiel eine normale Klasse und für startIntent(..) bastelst du dir was, was mit den aktuellen Context deiner aktiven Activity arbeitet.
Wenn ich die Spielklasse als normale Klasse ohne extends Activity deklariere habe ich doch keinen Zugriff auf neue Intents, oder? Das drumrumbasteln habe ich schon versucht... bin aber mangels Kenntnissen gescheitert. Es ist für mich einfach nur verwirrend, was der Unterschied zwischen getContext, getApplicationContext und Klassenname.this ist. Was ich gelernt habe: egal was ich davon nehme - die App stürzt ab .

Zitat:
2. Oder du behälst die Vererbung, muss dir dann aber was basteln, was ohne den Konstruktor arbeitet.
Nunja... wenn Du schreibst, dass dies kein guter Weg ist eine Activity abzuleiten dann wäre die 2te Option eigentlich keine Option... ich möchte es schon richtig machen. Aber wenn ich nicht weiterkomme versuche ich gerne Dinge aus.

Danke!

Gruß,

Alex
AlexL1980 ist offline   Mit Zitat antworten
Alt 28.10.2011, 12:41   #5 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Sensation

Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
Standard AW: Zugriff einer static Klasse auf Intent

Hmm, ich hab da grad ein Verständnisproblem mit static und finish. Du rufst in deiner Activity Spiel ja nach dem Erzeugen des Intents finish() auf. Damit wird doch die Klasse eigentlich zerstört. Kann man dann noch auf Start.s zugreifen? Bin da grad etwas verwirrt ;-)

Prinzipiell würde ich mir für meine statischen Werte eine eigene Klasse machen (GlobalStats oder so), und diese natürlich nicht von Activity oder sonst was ableiten.

Ansonsten mal den Aufbau und die Ablauflogik überdenken, vielleicht stimmts da ja nicht richtig :-)
Tom299 ist offline   Mit Zitat antworten
Alt 28.10.2011, 17:09   #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: Zugriff einer static Klasse auf Intent

In Android gibt es eine Klasse PreferenceActivity, mittels derer Du Schlüssel/Wert Paare speichern kannst und auf die von überall in der App zugreifen kannst. Diese Klasse stellt Dir sogar ein GUI für das Ändern dieser Key/Value Paare durch den Benutzer zur Verfügung.

Im übrigen wird der Lebenszyklus einer Activity vom ActivityManager gesteuert. Du als Entwickler kannst nur durch die Events wie onCreate(), onPause(), onResume(), etc. auf den Ablauf der App Einfluss nehmen, im Gegensatz zu Java. Schau Dir einfach mal den Activity Lebenszyklus an und die 4 grundsätzlichen Komponenten Activity, Service, Intent, Broadcast Receiver an (beachte: Ein Service hat einen anderen Lebenszyklus als eine Activity)

Android wird zwar in Java programmiert, das Programmierparadigma ist aber grundsätzlich verschieden.
mradlmaier ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei mradlmaier für diesen Beitrag:
AlexL1980 (29.10.2011)
Alt 29.10.2011, 07:28   #7 (permalink)
Neuer Benutzer

Registriert seit: 24.10.2011
Beiträge: 12
Abgegebene Danke: 3
Erhielt 0 Danke für 0 Beiträge
Standard

So... ich habe nun die Spielklasse mit implements serializable abgeleitet (ohne extends Activity).

Bei Klick auf neues Spiel instanziere ich die Klasse ohne Static. Mit Putextra werden die Klasseneinstellungen an die nächste Activity durchgereicht... und siehe da - alles funktioniert.

Vielen Dank an alle die geholfen haben!

Gruß,

Alex

Gesendet mit der Android-Hilfe.de-App
AlexL1980 ist offline   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Zugriff von Ticker/Timer-Klasse auf TextView-Objekt stdevel Android App Entwicklung 3 11.08.2011 09:44
Zugriff auf eigen View-Klasse funktioniert nicht flash2910 Android App Entwicklung 2 03.06.2011 01:28
Werte aus einer Klasse einer anderen Klasse übergeben und TextView verändern funk Android App Entwicklung 1 07.12.2010 11:13
Intent: Parameter an 2te Klasse übergeben necromancer Android App Entwicklung 2 09.09.2010 22:35
Intent zugriff auf Stack derdiedas Android App Entwicklung 0 01.04.2010 10:13




Du liest gerade: "Zugriff einer static Klasse auf Intent" 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.