Android ViewPager显示白屏

时间:2017-08-07 07:26:59

标签: android android-fragments android-viewpager

我正在尝试使用FragmentStatePagerAdapter在Fragment中创建VeiwPager。 它显示第一个片段,但滚动到第二个片段后,只有白色片段(即使滚动回到第一个片段) 我试过使用PagerAdapter并设置没有片段的图片,但结果是一样的。

有RAM问题吗?我能做些什么来解决它?

主页片段(包含ViewPager):

private void initSlideShow(View view){
    VPImageSlider = (ViewPager16by9) view.findViewById(R.id.VPImageSlider);
    sliderDotsPanel = (LinearLayout) view.findViewById(R.id.SliderDots);
    VPImageSliderAdapter vpImageSliderAdapter = new VPImageSliderAdapter(getFragmentManager());

    vpImageSliderAdapter.addSlide(R.drawable.dc_slide_1);
    vpImageSliderAdapter.addSlide(R.drawable.dc_slide_2);
    vpImageSliderAdapter.addSlide(R.drawable.dc_slide_3);
    vpImageSliderAdapter.addSlide(R.drawable.dc_slide_4);
    vpImageSliderAdapter.addSlide(R.drawable.dc_slide_5);

    VPImageSlider.setAdapter(vpImageSliderAdapter); 
}

ViewPager片段:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import iranelab.samsoft.net.iranelab.Classes.ImageView16by9;
import iranelab.samsoft.net.iranelab.R;


public class ViewPagerFragment extends Fragment {


private static final String ARG_PARAM4 = "imageTest";


private int imageTest;


public ViewPagerFragment() {}


public static ViewPagerFragment newInstance(String imageId, String type, String text,int imageTest) {
    ViewPagerFragment fragment = new ViewPagerFragment();
    Bundle args = new Bundle();
    args.putInt(ARG_PARAM4, imageTest);
    fragment.setArguments(args);
    return fragment;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        imageTest = getArguments().getInt(ARG_PARAM4);
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_view_pager, container, false);
    ImageView16by9 image = (ImageView16by9) view.findViewById(R.id.IVSlide);
    image.setImageResource(imageTest);
    return view;
}

}

ViewPager适配器:

public class VPImageSliderAdapter extends FragmentStatePagerAdapter {

private int[] slides = {};

public VPImageSliderAdapter(FragmentManager fm){
    super(fm);
}

public void addSlide(int drawable){
    slides = Arrays.copyOf(slides,slides.length+1);
    slides[slides.length-1]=drawable;
}

@Override
public int getCount() {
    return slides.length;
}

@Override
public Fragment getItem(int position) {
    return ViewPagerFragment.newInstance(slides[position]);
}

}

2 个答案:

答案 0 :(得分:0)

只需添加:

ViewPager.setOffscreenPageLimit(5);

答案 1 :(得分:0)

更改

VPImageSliderAdapter vpImageSliderAdapter = new VPImageSliderAdapter(getFragmentManager());

VPImageSliderAdapter vpImageSliderAdapter = new VPImageSliderAdapter(getChildFragmentManager());

它会起作用

相关问题