ViewPagerAdapter Попытка вызвать виртуальный метод Context.getSystemService (java.lang.String) 'для ссылки на пустой объект - PullRequest
0 голосов
/ 25 ноября 2018

Привет. Я попытался создать слайдер изображений с помощью ViewPager, и мне кажется, что у меня возникли проблемы с ViewPagerAdapter.java.Я все еще новичок об Android Studio, и мне нужна помощь.

Вот код

Сообщение об ошибке

11-25 16: 53: 16,683 24857-24857 / com.labs.penjualan.project.penjualan E / AndroidRuntime: FATAL EXCEPTION: main

Процесс: com.labs.penjualan.project.penjualan, PID: 24857

java.lang.NullPointerException: попытка вызвать виртуальный метод

'java.lang.Object android.content.Context.getSystemService (java.lang.String) 'для пустой ссылки на объект в com.labs.penjualan.project.penjualan.ViewPagerAdapter.instantiateItem (ViewPagerAdapter.java:38)

ViewPagerAdapter.java

package com.labs.penjualan.project.penjualan;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class ViewPagerAdapter extends PagerAdapter {

    private Context context;
    private LayoutInflater layoutInflater;
    private Integer [] images = {R.drawable.s1,R.drawable.s2,R.drawable.s3};

//    public ViewPagerAdapter(Context context) {
//        this.context = context;
//    }

    public ViewPagerAdapter(HomeFragment homeFragment) {
        this.context = context;
    }

    @Override
    public int getCount() {
        return images.length;
    }

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

    @Override
    public Object instantiateItem(ViewGroup container, final int position) {
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // I THINK THIS LINE ERROR
        View view = layoutInflater.inflate(R.layout.custom_layout, null);
        ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
        imageView.setImageResource(images[position]);

        ViewPager vp = (ViewPager) container;
        vp.addView(view, 0);
        return view;

    }

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

        ViewPager vp = (ViewPager) container;
        View view = (View) object;
        vp.removeView(view);

    }
}

1 Ответ

0 голосов
/ 25 ноября 2018

Вы получаете NullPointerException, потому что нет Context, поле context указывает на ничто, на ноль!

Это потому, что вы прокомментировали конструктор , где вы получили Context из аргументов и установите его в своем поле.Вы заменили его на HomeFragment, но HomeFragment не является контекстом (и вы не используете его где-то в коде).

Поэтому раскомментируйте предыдущий конструктор, чтобы использовать Context.

public ViewPagerAdapter(Context context) {
    this.context = context;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...