如何修复ViewPager问题?

时间:2017-03-24 14:14:01

标签: java android

我正在使用android工作室。 并使用ViewPager和几个片段。 但是片段的“OnCreateView”,“OnResume”被调用,尽管它没有在ViewPager中被选中。 我不知道如何才能发现这些事件。 谢谢。

2 个答案:

答案 0 :(得分:0)

我不确定“检测这些事件”是什么意思。

然而,ViewPager将创建屏幕上的当前片段,以及当前片段之前和之后的片段 - 如果用户滑动它们会立即显示,那么这就是如此。

例如:如果Viewpager的当前位置为2,则将创建片段1和片段3。

您可以通过调用:

来自定义此行为

myViewPager.setOffscreenPageLimit(NUM_ITEMS-1);

答案 1 :(得分:0)

您可以通过以下代码解决此问题:

Java代码:

// viewpager
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
// tab layout setup
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setTabTextColors(ColorStateList.valueOf(Color.WHITE));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setTabMode(TabLayout.MODE_FIXED);
tabLayout.setupWithViewPager(viewPager);

setupViewPager方法:

private void setupViewPager(ViewPager viewPager)
    {
ViewPagerAdapter viewPagerAdapter=new ViewPagerAdapter(getSupportFragmentManager());
viewPagerAdapter.addFragment(new Request(), "one");
viewPagerAdapter.addFragment(new Open(),"Two");
viewPagerAdapter.addFragment(new Closed(),"Three");
viewPager.setAdapter(viewPagerAdapter);
    }

XML代码:

<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/MyCustomTabLayout"
app:tabIndicatorColor="@android:color/white"
app:tabMode="fixed"
app:tabGravity="fill"
/>