2016-04-15 6 views
0

Hier haben wir das folgende Szenario:Wie bearbeite ich die EditText-Daten während der Wiederherstellung des Zustands?

  1. Füllen des EditText und andere Fields in Aktivität A
  2. von Bewegungsaktivität A zu Aktivität B auf Button klicken
  3. Jetzt von Bewegungsaktivität B zu Aktivität A auf Button klicken
  4. bevölkert EditText ist jetzt weg. Sie sind alle leer
  5. Diese Felder vorausgefüllt werden soll (als Benutzer hat sie bereits gefüllt)

Gibt es eine Möglichkeit den aktuellen Stand der Aktivität A zu speichern. Damit kann ich die EditText zurückgeben? Wenn nicht, wie kann ich die obige Aufgabe erreichen?

+0

Haben Sie den EditTexts eindeutige IDs zugewiesen? Wie in 'android: id =" @ + id/foobar "'? Wenn ja, sollte die Aktivität ihren Status speichern. – Floern

+0

"Jetzt von Aktivität B zu Aktivität A auf Knopfdruck wechseln" - Sie können einfach finish() von B aufrufen. Der Status wird automatisch gespeichert, wenn Sie in EditText IDs haben Dein XML. –

+0

@Floern @Shadab Ich habe für jede Textansicht eine eindeutige 'ID' vergeben. Hier ist das Szenario: Der Benutzer hat die Pflichtfelder in Aktivität A über die Benutzeroberfläche ausgefüllt und mit ActivityB_.intent (Activity1.this) .start(); Code. Jetzt kommt der Benutzer mit ActivityA_.intent (ActivityB.this) .start() zu Activity A zurück. Code. UI of Activity ist jetzt leer (Daten, die ich gefüllt habe, ist jetzt nicht da :) –

Antwort

1

Verwenden Sie SharedPreferences.Editor, um die EditText-Daten onPause zu speichern und die Daten mit SharedPreferences onResume abzurufen. Das ist der einfachste Weg.

0

Um den Aktivitätsstatus zu speichern, überschreiben Sie die OnSaveInstanceState() -Methode.

@Override 
protected void onSaveInstanceState(Bundle savedInstanceState) 
{ 
    super.onSaveInstanceState(savedInstanceState); 
    savedInstanceState.putString("key", somevalue); //save your data in key-value pair 
} 

und den Wert verwenden, wiederherstellen

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) 
{ 
    super.onRestoreInstanceState(savedInstanceState); 
    somevalue = savedInstanceState.getString("key"); 
} 

Verwenden Sie diese Methode, wenn Sie die Aktivität zerstören und es wieder zu schaffen.

+0

Danke für Ihre Antwort. Ich denke du hast meine Frage missverstanden. Der Benutzer hat die Pflichtfelder in "Aktivität A" über die Benutzeroberfläche ausgefüllt und mit "ActivityB_.intent (Activity1.this) .start();' code "zu" activity b "gewechselt. Nun kehrt der Benutzer zu "Aktivität A" zurück mit "ActivityA_.intent (ActivityB.this) .start();' code. UI of Activity ist jetzt leer (Daten, die ich ausgefüllt habe, sind jetzt nicht da :) –

+1

Ich habe, dass Sie eine neue Instanz von Activity A erstellen, aber Sie löschen die vorherige nicht, oder? Sie können diese Antwort verwenden, wenn Sie sonst mit gemeinsamen Präferenzen gehen. – anAmaka

1

Wie gehst du von b zurück zu a? Wenn Sie eine Absicht verwenden, starten Sie eine neue Instanz dieser "a" -Aktivität. Wie oben erwähnt, sollten Sie in Ihrer b-Aktivität beenden, die Sie zurück zu a bringen würde. Wenn Sie a mit Daten von b auffüllen müssen, sollten Sie startActivityForResult verwenden - http://developer.android.com/training/basics/intents/result.html

Verwandte Themen