主要原因是因为onDestroy的时候数组和handler没有情况
@Override public void onDestroy() { super.onDestroy(); handler.removeCallbacksAndMessages(null); dicatorList.clear(); f_main_laydor.removeAllViews(); }
附上小圆点生成图
private List<ImageView> dicatorList=new ArrayList<>(); private void initDor(LinearLayout lay){ lay.removeAllViews(); for (int i=0;i<imgs.length;i++){ ImageView img=getIndicatorImageView(); TextView txt = new TextView(getActivity()); //这里的dimen是一个xml文件里面放了多少DP,没有的话自己创建一个就行了 ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(getResources().getDimensionPixelSize(R.dimen.dot_size), getResources().getDimensionPixelSize(R.dimen.dot_size)); txt.setLayoutParams(lp); dicatorList.add(img); lay.addView(img); lay.addView(txt); } } private void setIndicator(int currentPosition) { for (int i = 0; i < imgs.length; i++) { dicatorList.get(i).setImageResource(R.mipmap.dor_namal); } dicatorList.get(currentPosition).setImageResource(R.mipmap.dor_click); } private ImageView getIndicatorImageView() { ImageView imageView = new ImageView(getActivity()); ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(getResources().getDimensionPixelSize(R.dimen.dot_size), getResources().getDimensionPixelSize(R.dimen.dot_size)); imageView.setLayoutParams(lp); return imageView; }
调用
initDor(f_main_laydor); setIndicator(0);vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { setIndicator(position); } @Override public void onPageScrollStateChanged(int state) { } });