/ / Android to (kontekst), podając NullPointerException - android

Android to (kontekst) daje NullPointerException - Android

Po prostu wykonując proste ćwiczenie, ustawiając adapter w GridView:

        GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));

ImageAdapter to kolejna klasa, następująca:

public class ImageAdapter extends BaseAdapter {

// ---the images to display---
public Integer[] imageIDs = { R.drawable.one, R.drawable.two,
R.drawable.three, R.drawable.four, R.drawable.five,
R.drawable.six };

private Context context;

public ImageAdapter(Context c) {
context = c;
}

// ---returns the number of images---
public int getCount() {
return imageIDs.length;
}

// ---returns the ID of an item---
public Object getItem(int position) {
return position;
}

public long getItemId(int position) {
return position;
}

// ---returns an ImageView view---
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(185, 200));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(5, 20, 5, 5);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(imageIDs[position]);
return imageView;
}

}

Podczas debugowania kodu aplikacja ulega awarii w wierszu gridview.setAdapter i zgłasza błąd java.lang.NullPointerException na to. Wszelkie pomysły, jak można to przezwyciężyć?

Odpowiedzi:

3 dla odpowiedzi № 1

Myślę, że twoim problemem nie jest fakt this jest zerowy, co nie ma sensu, ale to gridView ma wartość null.

Zwykle dzieje się tak z powodu:

  1. Nie zadzwoniłeś setContentView() przed findViewById.
  2. findViewById jest wywoływany z niewłaściwym identyfikatorem.

0 dla odpowiedzi nr 2

Może to pomóc:

Context context = getApplicationContext();
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(context));

0 dla odpowiedzi № 3

Posługiwać się

GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(ClassName.this));

gdzie ClassName to nazwa klasy, która rozszerza działanie Androida.