ViewPager 问题中的片段

     2023-02-26     266

关键词:

【中文标题】ViewPager 问题中的片段【英文标题】:Fragments inside ViewPager issue 【发布时间】:2015-10-04 02:10:20 【问题描述】:

ViewPager 中有 3 个片段。对于每个Fragment,我设置了不同的NavigationBar 颜色(以编程方式)。这是代码。

@Override
    public void init(Bundle arg0) 
        // TODO Auto-generated method stub
        addSlide(new Fragment1());
        addSlide(new Fragment2());
        addSlide(new Fragment3());

    


    private class Fragment1 extends Fragment 

        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
             if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)                 
                    getWindow().setNavigationBarColor(Color.parseColor(BLUE));
            
            Log.e("test", "1");
            return inflater.inflate(R.layout.layout_intro, container, false);
        

    

    private class Fragment2 extends Fragment 

        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
             if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)                 
                    getWindow().setNavigationBarColor(Color.parseColor(RED));
            
                Log.e("test", "2");

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

    

    private class Fragment3 extends Fragment 

        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
             if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)                 
                    getWindow().setNavigationBarColor(Color.parseColor(GREEN));
            
                Log.e("test", "3");

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

    

 

Logcat 中,我看到了错误的数字。例如,我在第一个 Fragment 中,我看到绿色 NavigationBar 和“2”。为什么?我该如何解决?

【问题讨论】:

【参考方案1】:

发生这种情况是因为ViewPager 已经加载了下一个片段,因此如果您在片段一上,则片段 2 已经创建,如果您滑动到片段 2,将创建片段 3。这就是滑动流畅的原因。

您需要将 onPageChangeListener 添加到您的ViewPager 中,如下所示:

mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() 

            @Override

        public void onPageSelected(int position) 
            switch(position) 
                case 1: if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)                 
                      getWindow().setNavigationBarColor(Color.parseColor(BLUE));
                    
                    break;    
                case 2: if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)                 
                      getWindow().setNavigationBarColor(Color.parseColor(RED));
                    
                    break;    
                case 3: if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)                 
                      getWindow().setNavigationBarColor(Color.parseColor(GREEN));
                    
                    break;    
            
        

        @Override
        public void onPageScrolled(int position, float offset, int offsetPixel) 
        

        @Override
        public void onPageScrollStateChanged(int state) 

        
    );

等等。

【讨论】:

ViewPager 中的片段被重新创建

】ViewPager中的片段被重新创建【英文标题】:FragmentsinViewPagergetrecreated【发布时间】:2013-02-2104:28:00【问题描述】:我有一个带有容器的FragmentActivity,我将Fragment和ViewPager放在其中。在ViewPager我有3个Fragments:[MainActivity][ViewPagerFra... 查看详情

带有 SlidingTabLayout 的 ViewPager 中的 Listview - 高度问题

】带有SlidingTabLayout的ViewPager中的Listview-高度问题【英文标题】:ListviewinsideaViewPagerwithSlidingTabLayout-Heightproblems【发布时间】:2016-04-2609:37:35【问题描述】:我有一个片段,我在其中托管了一个带有TabLayout的ViewPager,ViewPager的内容... 查看详情

替换 Viewpager 中的片段 [重复]

】替换Viewpager中的片段[重复]【英文标题】:replacefragmentinsideViewpager[duplicate]【发布时间】:2016-03-0222:21:33【问题描述】:我有一个带有三个片段的ViewPager,我想用另一个片段替换第三个片段,我检查了关于它的帖子,但没有任... 查看详情

带有 SlidingMenu 的片段中的 ViewPager

】带有SlidingMenu的片段中的ViewPager【英文标题】:ViewPagerinFragmentwithSlidingMenu【发布时间】:2012-12-0921:29:32【问题描述】:我想知道一般方法是如何在SlidingMenu的帮助下在Fragment中显示ViewPager:https://github.com/jfeinstein10/SlidingMenu有两... 查看详情

底部导航片段中的 Viewpager2

】底部导航片段中的Viewpager2【英文标题】:Viewpager2inFragmentofBottomNavigation【发布时间】:2020-11-0803:02:59【问题描述】:我在底部导航中有2个Fragment、Frag1和Frag2,在Frag1中我通过viewmodel(MVVM)实现了改造,当我尝试通过viewpager2中的... 查看详情

从 ViewPager 中检索片段

】从ViewPager中检索片段【英文标题】:RetrieveaFragmentfromaViewPager【发布时间】:2012-02-0519:10:35【问题描述】:我使用ViewPager和FragmentStatePagerAdapter来托管三个不同的片段:[片段1][片段2][片段3]当我想从FragmentActivity中的ViewPager获取Fra... 查看详情

viewpager中的fragmentpageradapter,fragmentstatepageradapter(代码片段)

在开发中ViewPager+fragment,包括缓存pager或者fragment中一些问题,什么时候该缓存销毁page,什么时候缓存销毁fragment问题FragmentPagerAdapter,FragmentStatePagerAdapter的区别和适用场景FragmentPagerAdapter1、通过offscreenPageLimi 查看详情

替换 Viewpager 中的片段/选项卡

】替换Viewpager中的片段/选项卡【英文标题】:ReplacingaFragment/TabinaViewpager【发布时间】:2012-04-1609:32:53【问题描述】:我目前正在尝试为我未来的应用程序制作框架。我真的很喜欢ActionBar和ViewPager,但错过了一个功能。我需要在... 查看详情

viewpager 中的片段,未找到视图错误

】viewpager中的片段,未找到视图错误【英文标题】:fragmentsinviewpager,noviewfounderror【发布时间】:2015-05-0516:07:03【问题描述】:我有一个活动持有一个片段,在这个片段中有一个按钮,当它被点击时,会弹出一个对话框。在这个... 查看详情

无法从 ViewPager 中的另一个片段刷新/更新片段中的列表视图

】无法从ViewPager中的另一个片段刷新/更新片段中的列表视图【英文标题】:Cannotrefresh/updatelistviewinafragmentfromanotherfragmentinViewPager【发布时间】:2013-04-1511:52:26【问题描述】:我很难弄清楚接下来的事情。我有什么:我有一个浏... 查看详情

带有导航抽屉的片段中的 ListView 和 ViewPager

】带有导航抽屉的片段中的ListView和ViewPager【英文标题】:ListViewandViewPagerwithinFragmentwithNavigationDrawer【发布时间】:2015-04-2620:25:36【问题描述】:我正在尝试将这两个功能都实现到片段中,但到目前为止还没有成功。它在ListView... 查看详情

ViewPager2 中的片段在返回父片段时被重新创建

】ViewPager2中的片段在返回父片段时被重新创建【英文标题】:fragmentsinsideViewPager2arerecreatedwhencomingbacktoparentfragment【发布时间】:2021-05-1204:56:09【问题描述】:我的一个片段中有一个ViewPager2(我们称之为片段A)。viewpager使用Fragm... 查看详情

ViewPager 中的片段在 getView() 中返回 null

】ViewPager中的片段在getView()中返回null【英文标题】:FragmentinsideViewPagerreturningnullingetView()【发布时间】:2013-10-0702:33:49【问题描述】:在我的应用程序中,我有一个ViewPager,在该ViewPager中大约有17个片段。我已经为纵向和横向设... 查看详情

Actionbar 选项卡和 ViewPager 中的片段

】Actionbar选项卡和ViewPager中的片段【英文标题】:FragmentinActionbarTabandViewPager【发布时间】:2011-12-2402:44:53【问题描述】:是否可以在平板电脑的操作栏选项卡和手机的ViewPager中使用Fragment?手机似乎使用了支持库,并且与操作栏... 查看详情

ViewPager 中的片段没有与之关联的活动

】ViewPager中的片段没有与之关联的活动【英文标题】:FragmentinsideaViewPagerdoesnothavetheactivityassociatedwithit【发布时间】:2020-04-2012:22:05【问题描述】:我有一个使用ViewPager和TabLayout的用例。我用过Android教程linkedhere。我的布局<?xml... 查看详情

片段转换的 ViewPager 和 RecyclerView 问题

】片段转换的ViewPager和RecyclerView问题【英文标题】:ViewPagerandRecyclerViewissuewithfragmenttransition【发布时间】:2021-03-0420:36:57【问题描述】:设置是这样的:带有nav_graph的单个活动应用(MainActivity)HomeFragment有viewPager2和3个子片段这3个... 查看详情

我在 viewpager 选项卡中的片段不刷新

】我在viewpager选项卡中的片段不刷新【英文标题】:Myfragmentsinviewpagertabdontrefresh【发布时间】:2013-01-2405:56:59【问题描述】:我有4个标签的viewpager..在每个标签中都有一个片段。我的第一个选项卡是一个带有表单的片段(例如用... 查看详情

viewpager 中的剪辑布局

】viewpager中的剪辑布局【英文标题】:Cliplayoutinviewpager【发布时间】:2015-08-1710:48:40【问题描述】:viewPager没什么问题。我有显示RoundedImageView的4个片段的ViewPager。RoundedImageView有一个圆角。当我从右向左滑动时,角落没有变圆。... 查看详情