2016-06-22 21 views
1

In einer Leinwand der Benutzer ist in der Lage, Ansichten wie EditText, ImageViews zu erstellen und es ist möglich, ziehen Sie sie in der Ansicht. All diese Ansichten werden zu einem Arraylist auf einen Klick mit folgendem Code:Save and Retrieve Array von Ansichten in Android

for(int index=0; index<((ViewGroup)mDragLayer).getChildCount(); ++index) { 
        View nextChild = ((ViewGroup)mDragLayer).getChildAt(index); 
        elementList.add(nextChild); 
} 

Während der Benutzer auf dem gleichen Bildschirm ist, ist es möglich, die gleiche Ansicht mit Hilfe von elementList mit folgendem Code zu füllen:

for(int i = 0; i < elementList.size(); i++){ 
     mDragLayer.addView(elementList.get(i)); 
} 

die Frage ist, wie kann elementList zu einem späteren Zeitpunkt verwendet werden (Neubelebung nach der App zu töten), um die Ansicht zu füllen. Ich habe versucht, gemeinsame Einstellungen zu verwenden, ist jedoch fehlgeschlagen.

Jeder Vorschlag wird sehr geschätzt.

Antwort

1

Sie können keine Ansichten beibehalten, wenn das Android-System Ihre App zum Absturz bringt. Stattdessen können Sie ein Modell beibehalten, das zum Erstellen dieser Ansichten benötigt wird. Sie können hierfür SharedPreferences oder eine Datenbank verwenden.

Verwenden Sie Aktivitäts- oder Fragmentrückrufe, um festzustellen, ob ein Status wiederhergestellt werden muss, und erstellen Sie dann eine eigene Logik zum erneuten Erstellen der Ansichtshierarchie aus den gespeicherten Daten, bevor die App beendet wurde. Sie können alles neu erstellen, wenn es sehr präzise sein muss. Sie können sogar eine Position jeder Ansicht speichern und diese Werte dann in Layoutparametern verwenden, um die Benutzeroberfläche neu zu erstellen.

+0

was meinst du, ist es nicht möglich, textview Informationen direkt in gemeinsamen Einstellungen zu speichern? – TharakaNirmana

+1

Sie können Textansichtsinformationen speichern, wenn Sie in String oder String [], aber kein TextView-Objekt konvertieren. – Adley

+0

Alle Ansichtsobjekte haben den gleichen Lebenszyklus wie umschließende Aktivität oder Fragment hat. Sobald die Aktivität beendet ist, wird die gesamte Ansichtshierarchie gelöscht. Sie können Daten beibehalten, die zum Erstellen der Ansicht erforderlich sind. Dies kann Text, Position, Farbe usw. sein. Sie können die Ansicht jedoch nicht persistieren. Sie müssen sie erneut erstellen. –