【问题标题】:non-foreground tabs created when clicking on another tab单击另一个选项卡时创建的非前景选项卡
【发布时间】:2016-06-18 12:18:33
【问题描述】:

我开发了一个应用程序,它具有三个选项卡和一个显示这些布局的活动。我总共有 3 个片段。

我学习了很多教程并使用了它们。 我有三个片段,每个片段都有一行

return inflater.inflate(R.layout.tab_fragment_*, container, false);

*1 or 2 or 3 根据哪个片段。

我在这一行设置了一个断点,但我看到发生了一些我无法理解的事情。

当我在调试模式下选择 tab1 时,我的调试器会点击 tab2 的片段中的代码!!!! 然后它点击 tab1 的片段中的代码,然后显示正确的结果。当我选择 tab2 时,调试器会在 tab3 的片段中命中代码!!!!然后它显示正确的结果。当我选择 tab3 时,我的调试器不会遇到任何断点,但会显示正确的结果。

请帮帮我。

我看到了正确的东西,但我无法理解。通过这种行为,我无法在每个选项卡上的按钮单击上添加一些操作(在这种情况下为片段)。

我的一个参考是: http://www.truiton.com/2015/06/android-tabs-example-fragments-viewpager/

我还使用了 Android 2.2 API。

【问题讨论】:

  • 您是使用带有视图寻呼机的标签还是仅使用标签?

标签: android


【解决方案1】:

默认情况下,ViewPager 只创建当前页面以及当前页面左侧和右侧的离屏页面。

(见http://www.androidzeitgeist.com/2012/10/examining-viewpager-2.html

当您单击 tab1 时,会创建 fragment1(立即显示给用户)和 fragment2(随时准备在屏幕上滚动)。当您单击 tab2 时,fragment2 已经存在(参见上一步)并立即显示,fragment3 被创建(准备好在屏幕上滚动)。

您可能很想尝试将set the offscreen page limit 归零,因此(理论上)每个片段仅在屏幕出现时才创建,但它不起作用。屏幕外页面限制的最小值可以是 1。

如果您需要在选项卡被选中时对其进行操作,您可以尝试以下操作:

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
  @Override
  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

  }

  @Override public void onPageSelected(int position) {
    Fragment selectedFragment = fragments.get(position));
    //do something here
  }

  @Override public void onPageScrollStateChanged(int state) {

  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2020-08-13
    相关资源
    最近更新 更多