Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android TabLayout更新选项卡';s观点_Java_Android_Android Fragments - Fatal编程技术网

Java Android TabLayout更新选项卡';s观点

Java Android TabLayout更新选项卡';s观点,java,android,android-fragments,Java,Android,Android Fragments,我有一个TabLayout,在其中我使用TabLayout.addTab(tab,I)动态添加选项卡。当我在已加载片段的位置添加新选项卡时,片段不会更新 例如,当我最初添加两个选项卡时会发生这种情况,这两个选项卡会被加载,然后在位置1添加另一个选项卡。位置1处的选项卡未更新。从FragmentPagerAdapter触发更新(我假设调用getItem(int position))需要做什么 当我调用tabLayout.addTab(tab,I)时,我尝试使用侦听器并在FragmentPagerA

我有一个TabLayout,在其中我使用
TabLayout.addTab(tab,I)动态添加选项卡。当我在已加载片段的位置添加新选项卡时,片段不会更新

例如,当我最初添加两个选项卡时会发生这种情况,这两个选项卡会被加载,然后在位置1添加另一个选项卡。位置1处的选项卡未更新。从FragmentPagerAdapter触发更新(我假设调用
getItem(int position)
)需要做什么


当我调用
tabLayout.addTab(tab,I)时,我尝试使用侦听器并在FragmentPagerAdapter上调用
notifyDataSetChanged()
,但这并不能解决问题。我还尝试调用TabLayout上的
invalidate

调用
TabLayout.removeAllTabs()每次要添加选项卡时。然后只需按所需顺序添加选项卡

或者您可以编写
mviewpage.setOffscreenPageLimit(0)其中mViewPager是您的viewpager。这就是这个方法的定义-

/**
     * Set the number of pages that should be retained to either side of the
     * current page in the view hierarchy in an idle state. Pages beyond this
     * limit will be recreated from the adapter when needed.
     *
     * <p>This is offered as an optimization. If you know in advance the number
     * of pages you will need to support or have lazy-loading mechanisms in place
     * on your pages, tweaking this setting can have benefits in perceived smoothness
     * of paging animations and interaction. If you have a small number of pages (3-4)
     * that you can keep active all at once, less time will be spent in layout for
     * newly created view subtrees as the user pages back and forth.</p>
     *
     * <p>You should keep this limit low, especially if your pages have complex layouts.
     * This setting defaults to 1.</p>
     *
     * @param limit How many pages will be kept offscreen in an idle state.
     */
    public void setOffscreenPageLimit(int limit) {
        if (limit < DEFAULT_OFFSCREEN_PAGES) {
            Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " +
                    DEFAULT_OFFSCREEN_PAGES);
            limit = DEFAULT_OFFSCREEN_PAGES;
        }
        if (limit != mOffscreenPageLimit) {
            mOffscreenPageLimit = limit;
            populate();
        }
    }
/**
*设置应保留到页面两侧的页数
*视图层次结构中处于空闲状态的当前页面。除此之外的页面
*需要时,将从适配器重新创建限制。
*
*这是作为优化提供的。如果你事先知道号码
*您将需要支持的页面数,或具有适当的延迟加载机制
*在您的页面上,调整此设置可以提高平滑度
*分页动画和交互的功能。如果页数较少(3-4页)
*您可以一次保持所有活动状态,这样就可以减少在布局中花费的时间
*新创建的视图子树作为用户页面来回移动

* *您应该将此限制保持在较低的水平,尤其是在页面布局复杂的情况下。 *此设置默认为1

* *@param限制空闲状态下屏幕外保留的页面数。 */ 公共无效设置OffScreenPageLimit(整数限制){ 如果(限制<默认\u屏幕外\u页面){ Log.w(标记,“请求的屏幕外页面限制”+限制+“太小;默认为”+ 默认(屏幕外页面); 限制=默认的屏幕外页面; } if(限制!=mOffscreenPageLimit){ mOffscreenPageLimit=限制; 填充(); } }