解决方案 »

  1.   

    黑屏会不会是因为图片没有加进去呢,我之前研究过ViewPager,它左右滑动时,系统调用方法的顺序也是有区别的,也许问题在这里。
      

  2.   


    刚刚用Textview试了一下。没有问题。那应该和ImageView或者说和加载图片有关系了。可是加载图片的方式是测试过的,异步的,GridView3列,加载1000张大图都不会OOM,只是很卡,很慢而已,这也是不可避免的。 先不说滑来滑去的问题,就一直向后滑,黑屏问题。 你说的图片没有加载进去,要咋测试比较好,我准备debug到黑屏Fragment,看是否打印的图片地址。 本人菜鸟,感觉debug起来乱糟糟的。还是对ViewPager了解的不够。
      

  3.   


    刚刚用Textview试了一下。没有问题。那应该和ImageView或者说和加载图片有关系了。可是加载图片的方式是测试过的,异步的,GridView3列,加载1000张大图都不会OOM,只是很卡,很慢而已,这也是不可避免的。 先不说滑来滑去的问题,就一直向后滑,黑屏问题。 你说的图片没有加载进去,要咋测试比较好,我准备debug到黑屏Fragment,看是否打印的图片地址。 本人菜鸟,感觉debug起来乱糟糟的。还是对ViewPager了解的不够。
    我在想如果textView都没问题的话,那就应该是加载问题,你这样,直接设置几张默认图片,不去异步加载新图试试。如果这样没问题那问题我估计就出在了异步加载图片上了。打印地址跟图片加没加进来没太大关系吧,还不如直接设置个图片加载完毕的标志符,Log输出这个标识符。
      

  4.   


    刚刚用Textview试了一下。没有问题。那应该和ImageView或者说和加载图片有关系了。可是加载图片的方式是测试过的,异步的,GridView3列,加载1000张大图都不会OOM,只是很卡,很慢而已,这也是不可避免的。 先不说滑来滑去的问题,就一直向后滑,黑屏问题。 你说的图片没有加载进去,要咋测试比较好,我准备debug到黑屏Fragment,看是否打印的图片地址。 本人菜鸟,感觉debug起来乱糟糟的。还是对ViewPager了解的不够。
    我在想如果textView都没问题的话,那就应该是加载问题,你这样,直接设置几张默认图片,不去异步加载新图试试。如果这样没问题那问题我估计就出在了异步加载图片上了。打印地址跟图片加没加进来没太大关系吧,还不如直接设置个图片加载完毕的标志符,Log输出这个标识符。刚刚用的三张图片放在drawable文件夹下实验了一下。确实不会有问题。我在加载的工具类里,在bitmap加载成功后,打印succ标识,黑屏的Fragment也能打印。
      

  5.   

    你说的写法有问题是什么意思?我用的就是一般的ViewPager,然后setAdapter。
    private class PreviewFragmentAdapter extends FragmentStatePagerAdapter { public PreviewFragmentAdapter(FragmentManager fm) {
    super(fm);
    } @Override
    public Fragment getItem(int position) {
    Fragment fragment = null;
    if (showType == NORMAL_TYPE && currentList != null && !currentList.isEmpty()) {
    fragment = new PhotoPreviewFragment(currentList.get(position));
    } else if (showType == APPOINT_TYPE && outerList != null && !outerList.isEmpty()) {
    fragment = new PhotoPreviewFragment(outerList.get(position));
    }
    return fragment;
    } @Override
    public int getCount() {
    int size = 0;
    if (showType == NORMAL_TYPE && currentList != null) {
    size = currentList.size();
    } else if (showType == APPOINT_TYPE && outerList != null) {
    size = outerList.size();
    }
    return size;
    } @Override
    public void destroyItem(View container, int position, Object object) {
    super.destroyItem(container, position, object);
    Log.e(TAG, "destroyItem1 position=" + position);
    } @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
    super.destroyItem(container, position, object);
    Log.e(TAG, "destroyItem2 position=" + position);
    } }
    默认showType是NORMAL_TYPE。currentList就是一个List,size=1000。
    Fragment如下:
    public class PhotoPreviewFragment extends BaseFragment { private PictureModel pictureModel;
    private ImageView imageView; private List<Drawable> drawables; private TextView textView; public PhotoPreviewFragment(PictureModel pictureModel) {
    this.pictureModel = pictureModel;
    } public PictureModel getPictureModel() {
    return pictureModel;
    } @Override
    protected String getRootLayoutName() {
    return "photo_preview_fragment";
    } @Override
    protected void initViews(View rootView) {
    // drawables = new ArrayList<Drawable>();
    // drawables.add(resource.getDrawable("xc1"));
    // drawables.add(resource.getDrawable("xc2"));
    // drawables.add(resource.getDrawable("xc3"));
    imageView = (ImageView) findViewByName(rootView, "photo_preview_image");
    // imageView.setBackgroundDrawable(drawables.get(pictureModel.getPosition()
    // % 3));
    textView = (TextView) findViewByName(rootView, "photo_preview_text");
    } @Override
    protected void initActions(View rootView) {
    imageView.setTag(pictureModel.getAbsolutePath());
    loadImage(imageView);
    textView.setText(pictureModel.getAbsolutePath());
    }
    }