2015-08-30 20 views
5

Zrobiłem aplikację, w której dynamicznie dodawam i usuwam textView do LinearLayout za każdym naciśnięciem przycisku.Jak zapisać zawyżony układ w Androidzie po zmianie konfiguracji?

Mój problem polega na tym, że po zmianie orientacji ekranu, która ponownie uruchamia działanie, wszystkie dodane widoki tekstowe znikają. Nie wiem, jak zachować nadmuchany stan.

Jest to część kodu, w którym zainicjować poglądy i przycisków:

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); 

i na metodzie onClick dodać lub usunąć TextView:

@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

możliwe duplikat [Android: Jak zapisać wystąpienie działalności na zmianie orientacji ekranu? Używam obiektów, a nie tylko prostych zmiennych (http://stackoverflow.com/questions/12291874/android-how-to-save-instance-of-theactivity-on-screen-orientation-change-i-us) –

Odpowiedz

0

Kiedy obracać ekran aktywność jest niszczona i odtwarzana. Musisz zapisać swój stan aktywności, aby zachować jakiekolwiek dane.

Zobacz tutaj Sprawdźcie tutaj Saving Android Activity state using Save Instance State

+0

dziękuję, przyjrzę się i spróbuję zrobić to poprzez fragment – toplusde

+0

@toplusde daj mi znać, jak się masz. –

1

można złagodzić ciężar reinicjalizacji swoją działalność poprzez zachowanie fragmentu, gdy działalność ta jest ponownie uruchomiony z powodu zmiany konfiguracji. Ten fragment może zawierać odniesienia do obiektów stanu, które chcesz zachować.

Gdy system Android zamknie działanie z powodu zmiany konfiguracji, fragmenty aktywności, które zaznaczyłeś do zachowania, nie zostaną zniszczone. Możesz dodać takie fragmenty do swojej aktywności, aby zachować obiekty stanowe.

Aby zachować stanowe obiektów we fragmencie podczas zmiany konfiguracji środowiska wykonawczego:

1-Extend klasę fragmentem i zadeklarować odwołania do obiektów stanowych.

2-Call setRetainInstance (boolean) po utworzeniu fragmentu.

3-Dodaj fragment do swojej aktywności.

4-Użyj FragmentManager, aby pobrać fragment po ponownym uruchomieniu działania.

Więcej szczegółów here

+0

Nie próbowałem używać fragmentu dla tej konkretnej aplikacji. Nie byłem pewien, czy można mieszać fragmenty i inflację. Spróbuję jednak. – toplusde