viewpager里面广告轮播代码报错

图片说明

子界面广告轮播代码
private int[] images = { R.drawable.lunbo_shouye1, R.drawable.lunbo_shouye2, R.drawable.lunbo_shouye3,R.drawable.lunbo_shouye4, R.drawable.lunbo_shouye5};

private List<ImageView> imageViews = new ArrayList<ImageView>();
private List<ImageView> pointIVs = new ArrayList<ImageView>();

private TopAdapter adapter;
private int currentPos = 0;

private Handler handlerTop = new Handler() {
    public void handleMessage(android.os.Message msg) {
        switch (msg.what) {
            case 1:
                int currentItem = vp.getCurrentItem();
                vp.setCurrentItem(currentItem + 1,true);
                //发送延迟3s消息再次滑动到下一页
                handlerTop.sendEmptyMessageDelayed(1, 3000);
                break;
        }
        super.handleMessage(msg);
    }
};


public void lunbo() {

    //创建用于显示点图标的布局参数对象
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    params.leftMargin = 5;
    params.rightMargin = 5;

    for (int i = 0; i < images.length; i++) {
        //创建将要显示到ViewPager中的ImageView对象
        ImageView imageView = new ImageView(this.activity);
        imageView.setBackgroundResource(images[i]);
        //将下标保存到imageView的tag
        imageView.setTag(i);
        //设置imageView点击监听
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });

        //保存到list中
        imageViews.add(imageView);
        //创建用于显示指示点图片的ImageView对象
        ImageView pointIV = new ImageView(this.activity);
        //设置多状态背景图片
        pointIV.setBackgroundResource(R.drawable.point_selector);
        //让第一个初始显示为当前点图片, 其它显示为一般的点图片
        if (i == 0) {
            pointIV.setEnabled(true);
        } else {
            pointIV.setEnabled(false);
        }
        //用集合保存
        pointIVs.add(pointIV);
        //添加到RadioGroup中显示
        ll.addView(pointIV, params);
    }
    //创建adapter对象
    adapter = new TopAdapter(activity,imageViews);
    //设置adapter显示ViewPager
    vp.setAdapter(adapter);
    if(handlerTop != null){
        //移除之前未处理的消息
        handlerTop.removeCallbacksAndMessages(null);
    }
    //计算ViewPager中当前Page的下标
    int currentItem = Integer.MAX_VALUE / 2 - Integer.MAX_VALUE / 2 % images.length;
    //初始显示到当前page
    vp.setCurrentItem(currentItem);
    //设置ViewPager页面改变的监听
    vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        // 当当前page有变化时回调
        // 1. 更新圆点图标
        // 2. 更新当前文本
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {
            //1. 更新圆点图标
            pointIVs.get(currentPos).setEnabled(false);
            position = position % pointIVs.size();
            pointIVs.get(position).setEnabled(true);
            currentPos = position;
        }

        @Override
        public void onPageScrollStateChanged(int state) {
            if (state == ViewPager.SCROLL_STATE_DRAGGING) {
                handlerTop.removeMessages(1);
            } else if (state == ViewPager.SCROLL_STATE_IDLE) {
                handlerTop.sendEmptyMessageDelayed(1, 3000);
            } else if (state == ViewPager.SCROLL_STATE_SETTLING) {
                handlerTop.removeMessages(1);
            }
        }
    });

    handlerTop.sendEmptyMessageDelayed(1, 3000);
}



public class TopAdapter extends PagerAdapter{
    private Context context;
    private List<ImageView> imageViews;

    public TopAdapter(Context context,List<ImageView> imageViews){
        this.context = context;
        this.imageViews = imageViews;
    }


    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        position = position % images.length;
        ImageView imageView = imageViews.get(position);
        container.addView(imageView);

        //图片的点击事件
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context, XiangQingActivity.class);
                context.startActivity(intent);
            }
        });

        return imageView;
    }

    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public void destroyItem(ViewGroup container1, int position, Object object) {

// ((ViewGroup) container.getParent()).removeView((View) object);
container1.removeView((View) object);
}
}

①在response.sendRedirect()方法后加return语句即可,如下:
response.sendRedirect("login.jsp");
return;
②检查提交的url是否有误。

             ③如果你的页面中用了清缓存代码response.flushbuffer();又用到了response.sendRedirect(url);

                 你可以把response.flushbuffer();去掉,或者用JS的window.location.href="url";来做转向。

             ④如果你用了OutputStream,而web容器生成的servlet代码中有out.write(””),这个和JSP中调用的

                 response.getOutputStream()冲突。out.write()这个是字符流,而response.getOutputStream()

                是字节流,你不能在同一个页面中调用多个输出流。无论先调用哪一个,在调用第二个时都会抛出

                  IllegalStateException,因为在jsp中,out变量是通过response.getWriter得到的。在多个使用了
                 outputStream的<%%>语句之间不能有空格及多余的字符。也就是页面中除了使用了
                  outputStream的<%%>之外不能有空格或其它任何字符,在之内的语句可以有空格及回车。
             在JSP页面做输出的时候有两种方式.一是通过JspWriter,另一个是通过
             OutputStream,但二者互相排斥.如果并存的话就会报告以上异常.                     
                 在不得不使用OutputStream的时候.我们必须要把JspWriter舍弃掉了。找到
                 请求异常的页面所对应的Servlet..把其中所有使用JspWriter的语句全部去掉.
                 或者是到你的JSP文件里把动态输出的代码注释掉.这里注意换行和空格制表符均
                 为JspWriter输出.应该一起去掉.保存文件重新启动服务器你会发现上述异常
                 消失了。                    
     由于jsp container在处理完成请求后会调用releasePageContet方法释放
      所用的PageContext object,并且同时调用getWriter方法,由于getWriter方法
      与在jsp页面中使用流相关的getOutputStream方法冲突,所以会造成这种异常,
     解决办法是:只需要在jsp页面的最后加上两条语句:   
             out.clear(); 
             out=pageContext.pushBody();
     即可(其中out,pageContext均为jsp内置对象!) 。

不是都告诉过你吗,addview之前,先把view从它的parent中移除,view不能同时拥有两个parent