垂直线性布局中的多个碎片

6
我是一个有帮助的助手,可以为您进行翻译。以下是需要翻译的内容:

我在我的应用程序中遇到了以下问题。我想按照特定顺序将多个片段添加到垂直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>

以下是我用来添加片段的代码。

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

我每次使用一个事务,确保它们按照顺序显示在屏幕上。
我的问题是当屏幕方向改变并且Activity被重新创建时,我无法确定它们将以相同的顺序出现在屏幕上。
有人也遇到过这个问题吗?我该如何解决这个问题?在LinearLayout中放置两个具有特定id的布局, 对于我需要添加的片段数量是不确定的(我只是用数字2作为示例),无济于事。

也许 setRetainInstance 对你有帮助。 - zozelfelfo
你有没有解决这个问题的机会?我已经搜索了一段时间,但没有找到答案。我只需要在运行时动态地向线性布局添加X个(数量可能不同)片段。 - reactive-core
1个回答

1
如果要添加数量不确定的片段,最好使用带有FragmentStatePagerAdapter或FragmentPagerAdapter的ViewPager。在那里,您可以以清晰的方式添加无限数量的片段,而不必担心使用大量内存的大型片段列表。
如果您想继续使用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.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接