我正在使用带选项卡的actionBar创建一个应用程序。我希望这样,以便在选择选项卡时调用特定的片段。我有一个问题,当创建应用程序时,只有一个应该被调用时立即调用两个片段。我的相关代码如下:
@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,等等。现在,在创建应用程序时,尽管仅选择了tabA,但我正在获取的日志消息却显示为fragA active和fragB active。选择tabB后,fragC变为活动状态。选择TABC时,没有任何反应。此后,当您选择任何其他选项卡时,没有任何其他日志消息。
第二种情况是应用程序启动时,尽管仅选择了tabA,但fragA和fragB处于活动状态。当您单击tabC时,fragC现在变为活动状态。在此之后单击任何其他选项卡时,什么也没有发生,并且我也没有收到其他日志消息。
另外,我认为值得一提的是,我尝试在每种情况下在switch语句中添加break语句。当我有一个针对案例0、1和2的break语句时,针对案例1和2的break语句很好,但是针对case 0的break语句表明这是一个不可达的语句。
如果您需要我提供任何其他代码,请告诉我。谢谢您的帮助。
出于性能方面的考虑,Android ViewPager(我假设您正在使用)始终会预加载下一个标签页。因此,您位于选项卡1上,它知道您可能会很快切换到选项卡2,因此它将选项卡2预加载到内存中,以便您在滑动时便已准备好在屏幕上显示该选项卡。否则,在您开始拖动与准备在屏幕上显示片段之间会有一个微小的停顿。这是预期的行为,您不能将其关闭。您可以增加它将预加载的选项卡的数量,但最小为每侧1个。
查看完选项卡后,它们将保留在内存中,除非内存用完。再次这样做是为了使系统不必重新创建它们。这就是为什么您看不到第二次创建的片段的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句