1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Ein Activity Object einem Intent mitgeben.

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Raidri, 08.04.2010.

  1. Raidri, 08.04.2010 #1
    Raidri

    Raidri Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    71
    Erhaltene Danke:
    1
    Registriert seit:
    27.03.2010
    Hallo,

    Ich habe eine Klasse die ein Activity ist. Ich benötige für eine andere Activity genau diese Instanz von der "main" Activity. Ich habe mal versucht diese Klasse einfach zu Serialisieren, was leider nicht geht.

    Mal als Beispiel:
    Code:
    class ActivityA extends Activity implements Serializable
    {
      public void onCreate(Bundle savedInstanceState) {
         Intent intent = new Intent(this, ActivityB.class);
         intent.putExtra("ACTIVITY", this);
         startActivity(intent);
      }
    }
    
    Wie bekomme ich nun ein Activity Object zu einer anderen Activity, ist das Überhaupt möglich ?!

    Danke.

    Gruß Raidri
     
  2. swordi, 08.04.2010 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ich glaube wenn du sowas brauchst, denkst du falsch.

    wenn du daten davon brauchst, übergib sie einzeln, aber nicht die komplette activity, weil die ja schlafen gelegt wird, sobald du eine neue startest
     
  3. Raidri, 08.04.2010 #3
    Raidri

    Raidri Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    71
    Erhaltene Danke:
    1
    Registriert seit:
    27.03.2010
    Stimmt schon, mir würde auch die ListView oder der CustomAdapter reichen.
    Aber die bekomme ich leider auch net rüber zum nächster activity.

    Wie löse ich das denn am besten. Beim Start der activity erzeuge ich eine ListView und einen Adapter mit Objekten drin. Beim Klick auf ein item in der liste, wird das eine Object genommen und es öffnet sich eine neue activity wo man die Daten editieren kann. Beim Speichern geht das Object über das Command pattern zum Service , dort wird es auf dem Server gespeichert und der Service schickt das Object weiter zum Responder und der soll dann die ArrayList im Adapter aktualisieren.

    Ich hoffe man versteht was ich meine. Ist schwer den Code zu posten, der verteilt sich über mehere Klassen.

    Danke
     
  4. swordi, 08.04.2010 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja
    ich würde mal beim klick auf die liste in aktivity A die ID des objekt nehmen
    dann zu aktivity B gehen, dort die Details anzeigen bzw editieren, dann speichern und beim zurückgehen in activity A würde ich die neuen Werte der liste nachladen und anzeigen.

    da braucht man keine view übergeben oder was weiß ich. view sind zum anzeigen da und sonst nichts.

    und nur weil du ein einziges element brauchst, wirst du auch nicht den gesamten adapter übergeben.
     
  5. Raidri, 08.04.2010 #5
    Raidri

    Raidri Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    71
    Erhaltene Danke:
    1
    Registriert seit:
    27.03.2010
    Du hast ja wieder mal recht, ich stehe vermutlich gerade ziemlich auf den Schlauch bzw. bin wohl noch etwas zu neu in der Android Entwicklung.

    Ich versuche es mal anders, um mein Problem deutlich zu machen.

    meine Main activity ist eine TabActivity.
    Diese erzeugt sich beim onCreate() 4 Tabs. Jedes Tab hat eine eigene Activity. In diesen Activitys sind die listen, die ich variable halten muss.
    Wenn ich jetzt aus der Liste ein Item editieren möchte, so muss ich eine neue activity starten die das editieren erlaubt. Ich komme aber nicht mehr in die eine Activity vom Tab zurück. Ich muss ja die TabActivity neuladen, wenn ich das soweit richtig verstanden habe und dann muss ich das editierte Objekt. an den Tab weitergeben. Nur da hängt es.
     
  6. ko5tik, 08.04.2010 #6
    ko5tik

    ko5tik Android-Experte

    Beiträge:
    620
    Erhaltene Danke:
    40
    Registriert seit:
    14.10.2009
    Phone:
    HTC Hero
    Also, Interface-Objeke im Allgemeinen sind sehr schlecht zum scharen geeignet. Nimm lieber was parcelables, oder sogar ein Singleton - es läuft ja alles in demselben VM
     
    Raidri bedankt sich.
  7. Raidri, 09.04.2010 #7
    Raidri

    Raidri Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    71
    Erhaltene Danke:
    1
    Registriert seit:
    27.03.2010
    Super danke. Das mit dem Singleton hat bei mir den Schalter umgelegt ;).
     
  8. baileys, 22.09.2010 #8
    baileys

    baileys Junior Mitglied

    Beiträge:
    35
    Erhaltene Danke:
    0
    Registriert seit:
    22.09.2010
    Kann jemand mal ein Beispiel zeigen wie man nun "eigene" Objekte einer Activity einer anderen Activity übergeben kann? Habe eine ArrayList mit eigenen Objekten die ich durch das Implementieren von Parcelable mache. Jedoch kann ich in der empfangenen Acitivity nicht auf die Daten in der Liste zugreifen bzw. diese auslesen.
     
  9. BenOtto, 22.09.2010 #9
    BenOtto

    BenOtto Android-Hilfe.de Mitglied

    Beiträge:
    141
    Erhaltene Danke:
    15
    Registriert seit:
    30.08.2010
    Auch das Singleton ist dafür nur bedingt geeignet.

    Die TabActivity bleibt erhalten. Sie wird nur von deiner neu gestarteten Activity überdeckt. Es gibt quasi einen Activity-Stack auf den alle Activities, die du innerhalb deiner Applikation startest, gelegt werden (es sei denn man setzt beim Intent entsprechende Flags). Wenn du dann die Zurück-Taste drückst, bzw. Innerhalb der neuen Activity finish() aufrufst, wird sie wieder entfernt und die alte Activity wird wird aktiv.

    Wenn du von deiner Activity was zurück erwartest, dann ruf sie mit startActivityForResult() auf.

    Für diesen Anwendungsfall solltest du dir mal das Notepad Tutorial von Google ansehen.
     

Diese Seite empfehlen