mol*_*may 6 layout android fragment
我在我的应用程序中遇到以下问题.我想以特定顺序将多个片段添加到垂直LinearLayout中.
这是我的布局
<?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>
Run Code Online (Sandbox Code Playgroud)
这是我用来添加片段的代码.
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();
Run Code Online (Sandbox Code Playgroud)
我每次都使用一个交易,所以我保证它们在屏幕上按顺序放置.
我的问题是,当方向改变并重新创建活动时,我无法确定它们是否会以相同的顺序出现在屏幕上.
有人经历过这个吗?我该如何解决这个问题?在LinearLayout中有两个布局,并且每个片段都有一个特定的ID,这样做无济于事,因为我必须添加的片段数量是不确定的(我只是使用数字2作为例子)
如果需要添加无限数量的 Fragment,最好将 ViewPager 与 FragmentStatePagerAdapter 或 FragmentPagerAdapter 结合使用。在那里,您可以以干净的方式添加无限数量的片段,而不必担心使用大量内存的巨大片段列表。
如果您想继续使用 ScrollView 方法,您可以使用 FragmentManager.executePendingTransactions() 来确保事务在其他事务之前完成:
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.
Run Code Online (Sandbox Code Playgroud)