gpt4 book ai didi

android - 垂直线性布局中的多个 fragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:13 25 4
gpt4 key购买 nike

我在我的应用程序中遇到以下问题。我想按特定顺序将多个 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>

这是我用来添加 fragment 的代码。

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 中有两个布局,每个 fragment 都有一个特定的 id 将无济于事,因为我必须添加的 fragment 数量尚未确定(我只是使用数字 2 作为示例)

最佳答案

如果要添加的 fragment 数量不定,最好使用带有 FragmentStatePagerAdapter 或 FragmentPagerAdapter 的 ViewPager。您可以在其中以干净的方式添加无限数量的 fragment ,而不必担心使用大量内存的大量 fragment 。

如果您想继续使用 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.

关于android - 垂直线性布局中的多个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17261633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com