【问题标题】:Fragments inside ViewPager issueViewPager 问题中的片段
【发布时间】: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”。为什么?我该如何解决?

【问题讨论】:

    标签: java android xml android-fragments android-viewpager


    【解决方案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) {
    
            }
        });
    

    等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 2021-03-04
      • 2019-05-31
      • 1970-01-01
      相关资源
      最近更新 更多