Android java.lang.NullPointerException

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
initAdData();
View view = inflater.inflate(R.layout.fragment_travel, container, false);

    dot0 = view.findViewById(R.id.v_dot0);
    dot1 = view.findViewById(R.id.v_dot1);
    dot2 = view.findViewById(R.id.v_dot2);
    dot3 = view.findViewById(R.id.v_dot3);
    dot4 = view.findViewById(R.id.v_dot4);
    tv_title = (TextView)view.findViewById(R.id.tv_title);
    adViewPager = (ViewPager)this.getActivity().findViewById(R.id.vp);

    return view;
}
    private void initAdData() {
    // 广告数据
    adList = getBannerAd();
    imageViews = new ArrayList<ImageView>();
    // 点
    dots = new ArrayList<View>();
    dotList = new ArrayList<View>();
    dots.add(dot0);
    dots.add(dot1);
    dots.add(dot2);
    dots.add(dot3);
    dots.add(dot4);
    ViewPager adViewPager = new ViewPager(getActivity());
    adViewPager.setAdapter(new MyAdapter());// 设置填充ViewPager页面的适配器
    // 设置一个监听器,当ViewPager中的页面改变时调用
    adViewPager.setOnPageChangeListener(new MyPageChangeListener());
    addDynamicView();
}
    private void addDynamicView() {
    // 动态添加图片和下面指示的圆点
    // 初始化图片资源
    for (int i = 0; i < adList.size(); i++) {
        ImageView imageView = new ImageView(getActivity());
        // 异步加载图片
        mImageLoader.displayImage(adList.get(i).getImgUrl(), imageView, options);
        imageView.setScaleType(ScaleType.CENTER_CROP);
        imageViews.add(imageView);
        dots.get(i).setVisibility(View.VISIBLE);//这行java.lang.NullPointerException
        dotList.add(dots.get(i));
    }
}

    dots.get(i).setVisibility(View.VISIBLE);//这行java.lang.NullPointerException

7个回答

initAdData()放在实例化后面调用。

qq_28026283
大白大白大白 希望采纳~
3 年多之前 回复
qq_28186229
崔峰鸣 非常感谢
3 年多之前 回复

dots在哪里定义的,是否初始化了。

Log一下吧, 看看dots集合里面有没有加上数据,应该是没取到数据,空指针,你就看 "."的前面,LOG的时候就LOG它就行了,

hanyi519
hanyi519 回复崔峰鸣: 还是上面我说的,就LOG找错就行,找“。”前面的东西,然后一点一点LOG
3 年多之前 回复
hanyi519
hanyi519 回复崔峰鸣: 就是空呗?那就看你dots加没加上数据,看看adList,这个是不是空,如果它是空,那你循环的时候也不起作用。知道在哪就顺着它找就行了,
3 年多之前 回复
qq_28186229
崔峰鸣 Log.v(dots.get(i).toString(), "=============================");您好,大神,打印这行空指针异常
3 年多之前 回复

[2011-09-14 13:44:16 - ddms]null
java.lang.NullPointerException
at com.android.ddmlib.Client.sendAndConsume(Client.java:572)
at com.android.ddmlib.HandleHello.sendHELO(HandleHello.java:142)
......
答案就在这里:Android(java.lang.NullPointerException)
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

空指针异常
这种错误很常见
是数据传送时丢失,或未初始化其值,也可能是小细节,变量名拼写错误,所以其变量本身就为空,不存在有过数据;
这种在过程中丢失,或写错的导致在使用其值时,变量并没有值,报此异常

qq_28186229
崔峰鸣 您说的很对
3 年多之前 回复

一般看你日志
会给出空指针(就是变量为空出错的地方)
异常的文件,具体到行例如 StudentDao.java 34
类似的,就是StudentDao 文件,的第 34 行有个常量,被使用时,发现其为空值
往前检查一下,上一步,或拼写是否错误

日志显示Zygote: error closing descriptor
libcore.io.ErrnoException: close failed: EBADF (Bad file number)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问