单击另一个选项卡时创建的非前景选项卡

时间:2016-06-18 12:18:33

标签: android

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

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

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

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

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

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

请帮帮我。

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

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

我也使用过Android 2.2 API。

1 个答案:

答案 0 :(得分:0)

  

默认情况下,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) {

  }
});