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

Datenübergabe an nächste Activity

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von AquaBall, 23.04.2012.

  1. AquaBall, 23.04.2012 #1
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Meine Activity ruft manchmal eine andere auf, und kehrt dann wieder zurück zur ersten.

    Dazu übergeb ich Daten mit
    Code:
    SharedPreferences preferences = 
          PreferenceManager.getDefaultSharedPreferences(myActivity.this);
    Editor edit = preferences.edit();
    edit.putString("übergabe",meinText);
    edit.commit();
    
    und
    Code:
    String meinText=preferences.getString("Übergabe", "??");
    
    Das läuft soweit einwandfrei.
    Nun komm ich aber in die Situation, dass ich Klassen mit 10-15 Attributen (String,double,boolean, ...) übergeben will.

    Gibt's da einen sinnvollen Ansatz?
    (ohne dass ich jeden einzelnen Wert in String umwandeln muss, und danach wieder zurückverwandeln.)
     
  2. BFK, 23.04.2012 #2
    BFK

    BFK Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Hi,
    Dein Problem mit SharedPreferences zu lösen ist viel zu aufwendig finde ich.

    Ich mache das so..:

    Du erstellst ne Klasse extends der Application also so..:
    Code:
    public class MyApp extends Application {
    
    private int was;
    
    public void setWas(int w)
    {
      was = w;
    }
    
    public int getWas()
    {
      return was;
    }
    
    }
    
    
    Da fügst du alle Werte die du speichern willst und die dazugehörigen setter und getter-Methoden.

    Dann in einer beliebigen Activity-Klasse rufst du die Werte ab oder speicherst da Werte:

    Code:
    MyApp app = (MyApp) this.getApplication();
    
    // heir kannst du dann Werte abfragen oder speichern
    
    Die Klasse MyApp wird erst dann zerstört wenn du deine App verlässt, so kannst du sicher sein, dass deine Daten nicht gelöschtr werden bis du die App natürlich schliesst..!
     
    Madlip bedankt sich.
  3. AquaBall, 23.04.2012 #3
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    121
    Erhaltene Danke:
    2
    Registriert seit:
    29.02.2012
    Klingt vielversprechend, aber ganz versteh ich es nicht.
    (Weil ich noch nie selbst etwas "zu extendendes" gemacht habe.)

    Ich hab bisher 2 Activities

    Code:
    public class HauptProgramm extends Activity {
        DivDaten meineDaten;
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.hauptprogramm);
            machwas(meineDaten);  
        }
        machwas(...) {
           ... // und stell die Daten bereit, 
               // und rufe manchmal DetailScreen
              Intent intent = new Intent( HauptProgramm.this, DetailScreen.class );
              startActivity(intent);
        }
    
    }
          
    public class DetailScreen extends Activity {
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.detailscreen);
            machAuchWas();  //  und hol die Daten irgendwie
        }
    }
    
    Ich bin nicht fit genug um jetzt zu wissen, wo ich was extenden muss/kann.
    Kannst du mir einen Tip geben?
     
    Zuletzt bearbeitet: 23.04.2012
  4. BFK, 24.04.2012 #4
    BFK

    BFK Erfahrener Benutzer

    Beiträge:
    160
    Erhaltene Danke:
    10
    Registriert seit:
    08.12.2010
    Du erstellst eine neue Klasse im gleichen Packet wo deine Activitys-Klassen sind.
    Zum Beispiel die Klasse, die ich davor geschrieben hab, da benutzt extend, so erweiterst du die Klasse Application.

    Da kannst du deine Variablen zwischenspeichern.

    Aber wenn du eigentlich nur von einer Activity zur anderen Daten übermitteln willst geht es auch einfacher.
     
  5. frankmehlhop, 08.10.2012 #5
    frankmehlhop

    frankmehlhop Neuer Benutzer

    Beiträge:
    21
    Erhaltene Danke:
    2
    Registriert seit:
    18.10.2011
    Phone:
    Samsung Galaxy S4 Mini
    Ja und wie?
    (wenn man obige Fragestellung beachtet)

    Frank
     
  6. StefMa, 08.10.2012 #6
    StefMa

    StefMa Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Datenübergebe tust du mit
    Intent.putExtra();

    Holen kannst du sie dir dann in der neuen Activity mit
    this.getExtra();

    Oder so ähnlich.
    Lies dir das Android-Training auf der developer-seite durch. Dort gibt es ein Beispiel!

    Gruß
     
  7. Madlip, 08.10.2012 #7
    Madlip

    Madlip Fortgeschrittenes Mitglied

    Beiträge:
    434
    Erhaltene Danke:
    72
    Registriert seit:
    03.08.2011
    mit diesen "intent.putextra" muss man jedoch beachten das man komplexere Datentypen nicht übergeben kann. Es kommt halt am ende des Tages darauf an was du genau machen willst. Ich bin mir gerade nicht sicher aber über diese intent, extra kann man doch nur string und int (maximal noch boolean) übergeben oder?
     
  8. swordi, 08.10.2012 #8
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    Kompliziertere Objekte machst einfach parcelable

    Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
     
  9. Madlip, 08.10.2012 #9
    Madlip

    Madlip Fortgeschrittenes Mitglied

    Beiträge:
    434
    Erhaltene Danke:
    72
    Registriert seit:
    03.08.2011
    ok und wie macht man das?

    Nehmen wir an wir haben eine ArrayList<Person>

    Person hat zwei String, nen int, double etc.

    wie macht man das dann?
     
  10. maniac103, 08.10.2012 #10
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    Google hilft :p - siehe z. B. hier

    Gesendet von meinem MB525 mit Tapatalk 2
     

Diese Seite empfehlen

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android activity datenübergabe