android - 创建应用程序时调用多个 fragment

标签 android android-fragments switch-statement break

我正在创建一个带有带有选项卡的 actionBar 的应用程序。我希望这样当您选择一个选项卡时,将调用一个特定的 fragment 。我有一个问题,当应用程序被创建时,两个 fragment 被立即调用,而只有一个 fragment 应该被调用。我的代码如下:

@Override
public Fragment getItem(int index)
{
    switch (index)
    {
        final String TAG0 = "MainActivity";
        Log.wtf(TAG0, "fragA active");
        case 0:
        return new FragA();

        final String TAG1 = "MainActivity";
        Log.wtf(TAG1, "fragB active");            
        case 1:
        return new fragB();

        final String TAG2 = "MainActivity";
        Log.wtf(TAG2, "fragC active");            
        case 2:
        return new fragC();
    }
    return null;
}

设置了 actionBar 的选项卡,以便 tabA 打开 fragA,tabB 打开 fragB,等等。现在,当创建应用程序时,我收到的日志消息显示 fragA Activity 和 fragB Activity ,尽管只选择了 tabA。选择 tabB 时,fragC 将变为 Activity 状态。选择 tabC 时,没有任何反应。当您在此之后选择任何其他选项卡时,我没有收到任何其他日志消息。

第二种情况是应用程序启动时,虽然只选择了tabA,但fragA和fragB处于 Activity 状态。当您单击 tabC 时,fragC 现在变为 Activity 状态。当您在此之后单击任何其他选项卡时,没有任何反应,我也没有收到其他日志消息。

此外,我认为值得注意的是,我尝试在 switch 语句中的每种情况下添加 break 语句。当我有针对情况 0、1 和 2 的 break 语句时,针对情况 1 和 2 的 break 语句没问题,但针对情况 0 的 break 语句显示这是一条无法访问的语句。

如果您需要我提供任何其他代码,请告诉我。感谢您的帮助。

最佳答案

出于性能原因,Android ViewPager(我假设您正在使用)总是预加载下一个选项卡。所以你在选项卡 1 上,它知道你可能很快会切换到选项卡 2,所以它会在内存中预加载选项卡 2,这样当你滑动时,它已经准备好显示在屏幕上。否则,在您开始拖动和 fragment 准备好显示在屏幕上之间会有一个微小的停顿。这是预期的行为,您无法将其关闭。您可以增加它将预加载的标签页数量,但最小值是每边 1 个。

一旦您查看了选项卡,它们就会保留在内存中,除非内存耗尽。这又是为了让系统不必重新创建它们。这就是为什么您看不到再次创建 fragment 的原因。

关于android - 创建应用程序时调用多个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22125825/

相关文章:

Android Studio > DDMS > 文件资源管理器没有内容

java - float 操作栏菜单出现在每个 fragment 上

select - break 语句是否从 switch/select 中断?

javascript - 我怎样才能让我的 JS 代码更短?

Android:查找需要权限的 API 调用

java - 即使按下主页按钮或后退按钮,Android 应用程序也会重新打开并继续下一个 Activity

java - Android Things 和 Adafruit Ultimate GPS Breakout v3

android - Dialog 在膨胀之前从 Activity 中删除 fragment

android - 在菜单项上添加点击事件

go - 为什么 switch 在下面的 golang 代码示例中匹配不同的类型