1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Lala Pila, 20.07.2012 #1
    Lala Pila

    Lala Pila Threadstarter Neuer Benutzer

    Hallo zusammen,
    obwohl ich mich nicht als totaler Programmieranfaenger bezeichnen wuerde, habe ich - zugegeben - eine ziemliche simple Frage, die ich schon durch die Foren- und Googlesuche zu loesen versucht habe.

    Ich habe eine Klasse programmiert, welche so auch vollstaendig als Java-Konsolenanwendung laeuft. Nun habe ich (fuer mich zum ersten Mal) versucht daraus ein App zu machen. Natuerlich mit paar schoenen Activities.

    Nun komme ich zum Problem.
    Auf einer Activity soll der User z.B. die Spieleranzahl angeben. Im Hintergrund wird dann dem Objekt die Spieleranzahl mitgeteilt und die zweite Activity gestartet, welche dann - in Abhaenigkeit von der Anzahl - nach den Namen der Spieler fragt.

    Worauf ich hinaus moechte: Ich moechte von verschiedenen Activities auf das gleiche Objekt zugreifen. Wie muss ich das machen? Muss ich das Objekt irgendwo global erzeugen oder es jeder Activity uerbergeben?

    Ich hoffe ihr versteht was ich meine. Wuerde mich freuen, wenn ihr mir helfen koentet. Wenn es noch Fragen gibt, beantworte ich diese natuerlich gerne.

    Liebe Gruesse aus Suedafrika
    Lala Pila
     
  2. BFK, 20.07.2012 #2
    BFK

    BFK Erfahrener Benutzer

    Hi Lala Pila,
    So wie ich das sehe hast du zwei Möglichkeiten.
    1. Möglichkeit du übergibst der zweiten Activity die Spieleranzahl mit durch "intent.putExtra".
    2. Möglichkeit du schreibst eine Klasse, die von der "Application"-Klasse extended wird und da speicherst du alle deine Variablen, die du dann von jeder Activity zugreifen kannst.

    Wenn es aber nur um eine einfache Spieleranzahl-"weiterleitung" geht, dann rate ich dir zur ersten Möglichkeit.
     
  3. Lala Pila, 20.07.2012 #3
    Lala Pila

    Lala Pila Threadstarter Neuer Benutzer

    Hallo BFK,

    danke fuer deine Antwort. Die zweite Moeglichkeit waere dann soetwas wie
    Code:
    public class generatePlayer extends Application {
        public String hallihallo;
    }
    Wo muss ich das Objekt dann initialisieren?

    Gruss
    Lala Pila
     
    Zuletzt bearbeitet: 20.07.2012
  4. BFK, 20.07.2012 #4
    BFK

    BFK Erfahrener Benutzer

    Hi,
    ...zum Beispiel (bei deiner Application-Klasse)..:
    Code:
    public class generatePlayer extends Application {
        public String hallihallo;
    
        public void setHalihallo(String ha) { hallihalo = ha; }
        public String getHalihallo(){return hallihalo;}
    
    
    }
    
    Jetzt bei Activity 1..:

    Code:
    
    generatePlayer gP = (generatePlayer)this.getApplication();
    
    gp.setHalihallo("Hallo");
    
    
    Dann bei Activity 2..:

    Code:
    generatePlayer gP = (generatePlayer)this.getApplication();
    
    String test = gP.getHalihallo();
    

    Edit..:
    Aber wie gesagt, wenn du nur etwas deiner zweiten Activity übermitteln willst, rate ich dir die 1. Möglichkeit zu benutzen, ist unkomlizierter, einfacher und erfüllt ja auch ihren zweck und deine 2. Activity startet ja ehe nach der ersten oder nicht..?
     
  5. Lala Pila, 23.07.2012 #5
    Lala Pila

    Lala Pila Threadstarter Neuer Benutzer

    Hallo BFK,

    danke fuer deine ausfuehrliche Beschreibung. So hat es bei mir nun auch funktioniert. Aber mich interessiert das Thema auch genauer. Also ich suche nicht nur nach einer funktionalen Loesung, sondern auch nach einer "gut programmierten".

    Du hast schon Recht, wenn man nur einfache Texte uebermitteln moechte, reicht auch die erste Moeglichkeit. Das von mir beschriebene Szenario ist ja nur der Anfang.
    Nach dem jeder seinen Namen eingegeben hat, wird jeder Spieler dran kommen und kann seine Rolle (jeder hat eine andere) "spielen". Und abhaengig von seiner Wahl, passiert dann auch etwas mit dem Spieler-Objekt.

    Ist die zweite Loesung denn auch "professionell"? Ist es Ueblich, auf einer Activity-Seite zu bleiben, die sich dann immer aendert? Also dass man nur die GUI aendert, man aber eigentlich auf der gleichen Activity-Seite bleibt?

    Als Beispiel kann man auch das kleine Spiel nennen, was ich im Sinn hat. Jede Rolle kommt in einer Runde (es gibt x-Runden) einmal dran und waehlt einen Spieler (aus einer bestimmten Auswahl). Und abhaenhig von der Rolle, wie oben beschrieben, passiert dann etwas mit dem Spieler(-Objekt). Manchmal kann eine Rolle aber mehrere Spieler auswahlen. Das Interface ist also nicht bei allen Rollen identisch.

    Wenn die Sitatuon X eintrifft, ist aber das Spiel beendet und eine Partei hat gewonnen. Spaetestens dann sollte ich doch die Activity aendern und detailliert anzeigen, wer warum gewonnen hat - oder nicht?
     
  6. eki89, 23.07.2012 #6
    eki89

    eki89 Junior Mitglied

    Es gibt Instanzvariablen und Klassenvariablen. Das selbe gilt für Methoden und Klassen. Sprich - bei einer Instanzvariablen gehört der Wert der in der Variablen steht der Instanz, also dem Objekt. Eine Klassenvariable gehört der Klasse und wird durch static vor dem Variablenbezeichner/Methodenbezeichner/Klassenbezeichner markiert.

    Also, du hast eine Klasse Hase mit einem String name. Außerdem eine statische Variable counter. Beim Konstruktoraufruf, also beim erzeugen eines neuen Objektes vom Typen Hase wird ein name festgelegt und der counter wird um eins erhöht.
    Hast du nun drei Objekte vom Typ Hase erzeugt, hast du drei unterschiedliche Hasen. Über die Klasse hast du nun Zugriff auf deine statische Variable counter. Also über den Aufruf Hase.counter. Dieser wird dir nun 3 liefern.

    Hoffe das hilft dir weiter.
     
  7. BFK, 23.07.2012 #7
    BFK

    BFK Erfahrener Benutzer

    Hi Lala Pila,
    Ich glaube in deinem Fall wäre eine Android-Game-Engine oder sowas ähliches sehr hilfreich. Leider habe ich in diesem Bereich keine Erfahrungen. Aber du könntest ja danach googeln. Ich glaube aber, dass so eine Engine deine vorhaben sehr erleichtern wird. Guck dir zum Beispiel folgende Liste an (Android Game Engines / Engines List - Android Games, Gamers & Gamedevelopers | XING)
    Die 2. Lösung, die ich dir vorgeschlagen habe kann Probleme lösen, die zum Beispiel nicht durch intents gelöst werden können. Zum Beispiel hat man eine TabActivity die aus 2 Activities besteht und man möchte wenn der Nutzer von der einen Activity zur anderen wechselt Daten übermitteln. Da könnte die 2. Lösung sehr hilfreich sein.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Bildgrößen für verschiedene Gerätegrößen Android App Entwicklung 04.07.2017
[ERLEDIGT] Existierendes Objekt immer NULL Android App Entwicklung 10.05.2017
[ERLEDIGT] In SQLite DB auf nächsten/vorherigen Datensatz zugreifen Android App Entwicklung 23.03.2017
Gängige Praxis zum Nutzen von AsyncTasks auf anderen Activities Android App Entwicklung 20.01.2017
Layout-Probleme auf verschiedenen Geräten Android App Entwicklung 19.01.2017
BLE Scan verhalten bei verschiedenen Devices Android App Entwicklung 19.12.2016
AI2: mit Listpicker- Auswahl mehrere Labels aus verschiedenen Index- Listen füllen. Android App Entwicklung 09.12.2016
Xamarin (C#) gleich gut wie Android Studio/Eclipse (Java)? Android App Entwicklung 22.09.2016

Users found this page by searching for:

  1. Alle Android Klassen und Objekte

    ,
  2. android objekt zwischen actvities

Du betrachtest das Thema "von verschiedenen Activities auf gleiches Objekt zugreifen" im Forum "Android App Entwicklung",