Android 视图寻呼机在启动和刷卡时也在调用其他片段 我的应用程序中的组件列表如下: 表1、表2、表3。 选项卡的片段-Tab1.xml&class、Tab2.xml&class、Tab3.xml&class。 用于在选项卡上显示片段的ViewPager。

Android 视图寻呼机在启动和刷卡时也在调用其他片段 我的应用程序中的组件列表如下: 表1、表2、表3。 选项卡的片段-Tab1.xml&class、Tab2.xml&class、Tab3.xml&class。 用于在选项卡上显示片段的ViewPager。,android,android-fragments,android-viewpager,android-tablayout,android-studio-3.0,Android,Android Fragments,Android Viewpager,Android Tablayout,Android Studio 3.0,所以,当我调试启动过程时,应用程序启动时,它的工作原理如下: 它调用“Tab1.class”, 然后它调用“Tab2.class”, 当从“Tab1”滑动到“Tab2”时,它调用“Tab3.class” 当从“Tab2”滑动到“Tab3”时,它不会调用任何内容 反向刷卡时: 当从“Tab3”滑动到“Tab2”时,它调用“Tab1.class” 然后,当从“Tab2”滑动到“Tab1”时,它不调用任何内容 问题: 那么,为什么会这样呢 当应用程序在“tab1”上启动时,如何仅调用“tab1.cla

所以,当我调试启动过程时,应用程序启动时,它的工作原理如下:

它调用“Tab1.class”, 然后它调用“Tab2.class”, 当从“Tab1”滑动到“Tab2”时,它调用“Tab3.class”

当从“Tab2”滑动到“Tab3”时,它不会调用任何内容

反向刷卡时:

当从“Tab3”滑动到“Tab2”时,它调用“Tab1.class”

然后,当从“Tab2”滑动到“Tab1”时,它不调用任何内容

问题: 那么,为什么会这样呢

当应用程序在“tab1”上启动时,如何仅调用“tab1.class”

当我从“tab1”滑动到“tab2”时,如何仅调用“tab2.class”

MainActivity.java activity_main.xml 请务必告诉我这个问题的解决办法

ViewPager旨在以这种方式工作,以避免从一个片段切换到另一个片段时动画中的延迟,它将在可见片段旁边加载至少一个额外片段,以确保有滑动的范围

因为,虽然滑动视图寻呼机具有同时显示两个片段的能力,因此总是加载一个额外的片段,但如果没有两个页面,视图寻呼机是无用的

setOffscreenPageLimit

设置在空闲状态下视图层次结构中当前页面两侧应保留的页数。超出此限制的页面将在需要时从适配器重新创建

希望这有帮助

ViewPager mViewpager = (ViewPager)findView....
mViewPager.setOffscreenPageLimit(3);
用于在片段可见时刷新片段


mViewPager.setOffscreenPageLimit1;您尝试过设置它吗?定义它调用“TabX.class”。。。如果这意味着要创建片段类实例,那么就想想:如果不创建它们,如何能够在滑动时看到这两个片段?@Dipalis。没有。我应该把它放在哪里?在viewPager.setAdapterpagerAdapter;之后;??ViewPager.setOffscreenPagilemit1;-。。。@Dipalis的好例子。谢谢,但它不起作用。是的,但我不想在我从tab3滑动到tab2时初始化tab1的组件。当我从tab2滑动时,它不会初始化tab1的组件。当你转到2时,它已经初始化了,它将只呈现其instanceIt初始化startups上的所有3个片段,然后当我滑动时它不会这样做。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="vwc.com.newconcept.MainActivity">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v7.widget.Toolbar
                android:id="@+id/main_toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <android.support.v4.view.ViewPager
                android:id="@+id/viewPager"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <android.support.design.widget.TabLayout
                    android:id="@+id/tabLayout"
                    app:tabMode="scrollable"
                    app:tabGravity="center"
                    android:layout_gravity="top"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />

            </android.support.v4.view.ViewPager>

        </android.support.design.widget.AppBarLayout>

</android.support.v4.widget.DrawerLayout>
ViewPager mViewpager = (ViewPager)findView....
mViewPager.setOffscreenPageLimit(3);
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (getFragmentManager() != null) {
        getFragmentManager()
                .beginTransaction()
                .detach(this)
                .attach(this)
                .commit();
    }
}