这样写viewpager轮播页数超过2页就闪退,这是为什么?
public class FragmentOne extends Fragment implements Runnable {
private ViewPager viewPager; private int[] gg = new int[]{R.mipmap.header_pic_ad1, R.mipmap.header_pic_ad2}; private List<ImageView> showPager = new ArrayList<ImageView>(); private ViewGroup dotViewGroup; private List<ImageView> dotView = new ArrayList<ImageView>(); private View view; private Thread t;
1
2
3
4
5
6
7
Override
public void onAttach(Context context) {
super.onAttach(context);
}
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState);
1
2
3
}
@Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); viewPager = (ViewPager) view.findViewById(R.id.show_view); dotViewGroup = (ViewGroup) view.findViewById(R.id.dot_layout); for (int i = 0; i < gg.length; i++) { ImageView v = new ImageView(getContext()); v.setScaleType(ImageView.ScaleType.CENTER_CROP); v.setImageResource(gg[i]); showPager.add(v); ImageView dot = new ImageView(getContext()); dot.setImageResource(R.drawable.dot2); dot.setMaxHeight(100); dot.setMaxWidth(100); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(50, 50); layoutParams.leftMargin = 20; dot.setLayoutParams(layoutParams); dot.setEnabled(false); dotViewGroup.addView(dot); dotView.add(dot); } viewPager.setAdapter(new PagerAdapter() { @Override public int getCount() { return gg.length; } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == object; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { ImageView imageView = showPager.get(position); container.addView(imageView); return imageView; } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { container.removeView((View) object); } }); t = new Thread(this); t.start(); viewPager.setCurrentItem(0); setDotView(0); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { setDotView(position); } @Override public void onPageScrollStateChanged(int state) { } }); } //创建视图 @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_one, container, false);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
return view;
} @Override public void onStart() { super.onStart(); } @Override public void onPause() { super.onPause(); } @Override public void onStop() { super.onStop(); } @Override public void onDestroyView() { super.onDestroyView(); } @Override public void onDestroy() { super.onDestroy(); } private void setDotView(int position) { for (int i = 0; i < dotView.size(); i++) { dotView.get(i).setImageResource(position == i ? R.drawable.dot : R.drawable.dot2); } } @Override public void run() { int item = 0; while (item < gg.length) { viewPager.setCurrentItem(item); setDotView(item); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } if (item == (gg.length - 1)) item = 0; else item++; } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54