gpt4 book ai didi

java - ViewPager 问题中的 fragment

转载 作者:搜寻专家 更新时间:2023-11-01 08:42:15 24 4
gpt4 key购买 nike

我在 ViewPager 中有 3 个 Fragments。我为每个 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”。为什么?我该如何解决?

最佳答案

发生这种情况是因为 ViewPager 已经加载了下一个 fragment ,所以如果您在 fragment 1 上,则 fragment 2 已经创建,如果您滑动到 fragment 2,将创建 fragment 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) {

}
});

等等。

关于java - ViewPager 问题中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31423571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com