2013-06-23 16 views
5

Mutiple fragmanları Uygulamamda aşağıdaki sorunla karşılaşıyorum. Belirli bir sırada dikey LinearLayout içine birden çok parça eklemek istiyorum.Dikey Linearlayout

İşte benim düzen

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/scrollview" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fillViewport="true" > 
<LinearLayout 
    android:id="@+id/content" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 
</LinearLayout> 
</ScrollView> 

olduğunu Ve burada parçaları eklemek için kullanın koddur.

Fragment fragment1 = MyFragment.newInstance(param1); 
Fragment fragment2 = MyFragment.newInstance(param2); 

FragmentManager fm = getSupportFragmentmanager(); 

fm.beginTransaction().add(R.id.content, fragment1, "fragment1").commit(); 
fm.beginTransaction().add(R.id.content, fragment2, "fragment2").commit(); 

Her seferinde bir işlem kullanırım, böylece ekranda o sıraya yerleştirildiklerini garanti ederim.

Sorunum, yönlendirme değiştiğinde ve Etkinlik yeniden oluşturulduğunda, ekranda aynı sırada görüneceğinden emin olmamın bir yolu yoktur.

Birisi de bunu deneyimledi mi? Sorunu nasıl çözebilirim? LinearLayout içinde her bir parça için belirli bir kimlik ile iki düzene sahip olmak yardımcı olmayacaktır, çünkü eklemek zorunda olduğum fragmanların sayısı belirsizdir (örnek için sadece 2 numarasını kullandım)

+0

Belki [setRetainInstance] (http: // developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)) Sizin için yararlı olur – zozelfelfo

+0

Bu sorunu çözdüğünüz herhangi bir şans var mı? Cevabı bulamadan bir süre aradım. Sadece çalışma zamanında X numarasını (değişkenlik gösterebilir) doğrusal bir düzende dinamik olarak eklemem gerekir. –

cevap

1

Belirsiz bir miktar varsa Parçalar eklemek, bir FragmentStatePagerAdapter veya FragmentPagerAdapter ile ViewPager daha iyi kullanın. Orada, sayısız Fragman sayılarını temiz bir şekilde ekleyebilir ve büyük miktarda bellek kullanarak çok sayıda Fragment listesi hakkında endişelenmenize gerek yoktur.

Eğer scrollview yaklaşımla kalmak istiyorsanız

, sen FragmentManager.executePendingTransactions kullanabilirsiniz() diğer öncesinde, işlem tamamlanmış olduğunu, emin olmak için:

FragmentManager fm = getSupportFragmentmanager(); 

fm.beginTransaction().add(R.id.content, fragment1, "fragment1").commit(); 
fm.executePendingTransactions(); 
fm.beginTransaction().add(R.id.content, fragment2, "fragment2").commit(); 
fm.executePendingTransactions(); 
// etc. 
İlgili konular