gpt4 book ai didi

android - 我可以在 viewpager 中的内容之外向 FragmentActivity 添加 fragment 吗?

转载 作者:行者123 更新时间:2023-11-30 02:48:15 24 4
gpt4 key购买 nike

我是 fragment 的新手。我有一个扩展 FragmentActivity 并使用 ViewPager 在 fragment 之间滑动的 Activity 。

在其中一个 fragment 中,我想启动一个位于 View 寻呼机内容“外部”的新 fragment 。是否可以添加这样的 fragment ,或者我是否需要使用该 fragment 启动新 Activity 。

现在我让它启动一个新的 Activity,但是速度很慢。

Activity A

fragment A
fragment B
fragment C

Activity B

fragment D
fragment A

因此 fragment A 可以启动 Activity B 以到达 fragment D,但理想情况下,如果我可以在 Activity A 中注入(inject) fragment D 会很酷

希望这是有道理的。

最佳答案

是的,你可以,但我强烈建议你避免它,除非你有充分的理由这样做。

ViewPager(我假设)托管在您的 Activity 中。 ViewPager 从其适配器获取其 View 。 (一个 FragmentStateAdapter 或类似的)。因此,您可以告诉 Activity 更改其布局(和/或隐藏 Viewpager 并显示另一个 FrameLayout),或者您可以简单地启动另一个包含单个 fragment 的 Activity。这也可以。

与 ViewPager/Adapter 打交道通常很复杂,您可能会浪费时间尝试使其正常工作。

另一方面,您可以将 fragment 添加到 ViewPager 的适配器并使用适配器的 getType 返回不同类型的 fragment 。

所以你可以这样做(伪代码):

mPagerAdapter.addFragmentDToTheDataAtPositionZero(); //longFancyName ;)
mPagerAdapter.notifyDataSetChanged();
mViewPager.setCurrentItem(0, false);

这会将 fragment D 添加到 viewpager 的“顶部”并将切换到它。

然后您的适配器必须使用接口(interface)来确定必须实例化哪种类型的 fragment ......

适配器的 getItem 看起来像……(同样是伪代码)

    @Override
public Fragment getItem(final int i) {

final FragmentTypeInterface f = yourData.get(i);

if (f.isD()) {
return FragmentD.newInstance();
} else {
return OtherFragment.newInstance();
}
}

等等……:)

关于android - 我可以在 viewpager 中的内容之外向 FragmentActivity 添加 fragment 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644778/

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