Datenübergabe an nächste Activity

A

AquaBall

Fortgeschrittenes Mitglied
2
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.)
 
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..!
 
  • Danke
Reaktionen: Madlip
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:
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.
 
BFK schrieb:
Aber wenn du eigentlich nur von einer Activity zur anderen Daten übermitteln willst geht es auch einfacher.

Ja und wie?
(wenn man obige Fragestellung beachtet)

Frank
 
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ß
 
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?
 
Kompliziertere Objekte machst einfach parcelable

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
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?
 
Google hilft :p - siehe z. B. hier

Gesendet von meinem MB525 mit Tapatalk 2
 

Ähnliche Themen

FabianDev
Antworten
5
Aufrufe
547
swa00
swa00
M
Antworten
8
Aufrufe
952
deek
D
M
  • maksimilian
Antworten
15
Aufrufe
1.695
maksimilian
M
Zurück
Oben Unten