/ / Android to (kontext) dáva NullPointerException - android

Android tento (kontext) dáva NullPointerException - android

Stačí urobiť jednoduché cvičenie nastavením adaptéra na GridView:

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

ImageAdapter je ďalšia trieda:

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;
}

}

Keď ladím kód, na riadku gridview.setAdapter dôjde k zlyhaniu aplikácie a nahlási sa java.lang.NullPointerException na toto, Nejaké nápady, ako to možno prekonať?

odpovede:

3 pre odpoveď č. 1

Myslím si, že vaším problémom nie je skutočnosť this je null, čo nedáva zmysel, ale to gridView je null.

Zvyčajne sa to deje z dôvodu:

  1. Nepovedal si setContentView() pred findViewById.
  2. findViewById sa volá s nesprávnym ID.

0 pre odpoveď č. 2

Môže to pomôcť:

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

0 pre odpoveď č. 3

použitie

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

kde ClassName je názov triedy a rozširuje aktivitu Android.