2015-08-30 4 views
5

Ich habe eine Anwendung, wo ich ein TextView dynamisch hinzufügen und löschen, um eine LinearLayout jedes Mal, wenn eine Taste gedrückt wird.Wie speichere ich ein überhöhtes Layout in Android nach Konfigurationsänderungen?

Mein Problem ist, dass wenn die Bildschirmausrichtung ändert, die die Aktivität neu startet, alle hinzugefügten textViews verschwinden. Ich weiß nicht, wie man den aufgeblasenen Zustand LinearLayout behält.

Dies ist der Teil des Codes, wo ich die Ansichten und die Tasten initialisieren:

private LayoutInflater inflater; 
private LinearLayout ll; 
View view; 
Button add; 
Button delete; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    inflater = getLayoutInflater(); 
    ll = (LinearLayout)findViewById(R.id.ll); 
    add = (Button)findViewById(R.id.bAdd); 
    delete = (Button)findViewById(R.id.bDelete); 

    add.setOnClickListener(this); 
    delete.setOnClickListener(this); 

und auf dem I onClick Methode hinzufügen oder die Textviews löschen:

@Override 
    public void onClick(View v) { 
     switch (v.getId()) 
     { 
      case R.id.bAdd: 
      { 
       view = inflater.inflate(R.layout.sublayout,ll,true); 
       break; 
      } 
      case R.id.bDelete: 
      { 
       int childSize = ll.getChildCount(); 
       if(0 != childSize) { 
        ll.removeViewAt(childSize -1); 
       } 
       Log.i("InflateLayout", "childsize: " +childSize); 
      } 
     } 
    } 
+0

möglich Duplikat [Android: Wie Instanz der Aktivität auf Änderung der Bildschirmausrichtung sparen? Ich benutze Objekte, nicht nur einfache Variablen] (http://stackoverflow.com/questions/12291874/android-how-to-save-instance-of-the-activity-on-screen-orientation-change-i-us) –

Antwort

0

Wenn Sie drehen Ihre Bildschirm die Aktivität wird zerstört und neu erstellt. Sie müssen Ihren Aktivitätsstatus speichern, um Daten zu behalten.

Sehen Sie hier erfahren Sie hier Saving Android Activity state using Save Instance State

+0

danke, ich werde einen Blick darauf werfen und versuchen, es durch ein Fragment zu tun – toplusde

+0

@toplusse lassen Sie mich wissen, wie Sie auskommen. –

1

Sie die Last der Neuinitialisierung Ihre Aktivität lindern kann durch Halten eines Fragment, wenn Ihre Aktivität aufgrund einer Konfigurationsänderung neu gestartet wird. Dieses Fragment kann Verweise auf statusbehaftete Objekte enthalten, die Sie beibehalten möchten.

Wenn das Android-System Ihre Aktivität aufgrund einer Konfigurationsänderung herunterfährt, werden die Fragmente Ihrer Aktivität, die Sie behalten möchten, nicht zerstört. Sie können solche Fragmente zu Ihrer Aktivität hinzufügen, um statusbehaftete Objekte zu erhalten.

1-Erweitere Fragment Klasse und erklären Verweise auf Ihre Stateful-Objekte:

Um Stateful Objekte in einem Fragment während einer Laufzeitkonfigurationsänderung zu behalten.

2-Rufen Sie setRetainInstance (boolean) auf, wenn das Fragment erstellt wird.

3 - Fügen Sie das Fragment zu Ihrer Aktivität hinzu.

4-Verwenden Sie FragmentManager, um das Fragment beim Neustart der Aktivität abzurufen.

Weitere Details sind here

+0

Ich habe nicht versucht, ein Fragment für diese bestimmte App zu verwenden. Ich war mir nicht sicher, ob es möglich ist, Fragmente und Inflation zu mischen. Ich werde es aber versuchen. – toplusde