ImageAdapter上的java.lang.NullPointerException。<;初始化>;(ImageAdapter.java:41)
初始化ImageAdapter对象时出现nullpointer异常。我已经定义了IMageAdapter参数化构造函数并正确调用了它(希望如此)。我不知道我哪里做错了 我已经创建了单独的ImageApdater java类,并且没有对它进行子类化,通过gridview,我为它创建了这个imageadapter,它位于一个片段上,这个片段是Tab 这是我的ImageAdapter类ImageAdapter上的java.lang.NullPointerException。<;初始化>;(ImageAdapter.java:41),java,android,android-fragments,baseadapter,Java,Android,Android Fragments,Baseadapter,初始化ImageAdapter对象时出现nullpointer异常。我已经定义了IMageAdapter参数化构造函数并正确调用了它(希望如此)。我不知道我哪里做错了 我已经创建了单独的ImageApdater java类,并且没有对它进行子类化,通过gridview,我为它创建了这个imageadapter,它位于一个片段上,这个片段是Tab 这是我的ImageAdapter类 public class ImageAdapter extends BaseAdapter { Context m
public class ImageAdapter extends BaseAdapter {
Context mcontext;
int[] IMAGES;
int[] IMAGE_ID, IMAGE_PRICE;
String[] IMAGE_NAME, MODEL_TYPE;
public ImageAdapter(Context context, int[] images, int[] image_id, int [] image_price,
String[] image_name, String[] model_type) {
mcontext=context;
this.IMAGES = images;
this.IMAGE_ID=image_id;
this.IMAGE_PRICE=image_price;
this.IMAGE_NAME=image_name;
this.MODEL_TYPE=model_type;
}//ImageAdapter Constructor
我在Fragment类中调用它,如下所示:
public class CommunityGalleryFragment extends Fragment {
byte[] image = null;
Bitmap bitmapImage = null;
Context context;
// images to be inflated in gallery view
// Images to be stored in database table
int[] IMAGES = { R.drawable.a, R.drawable.g, R.drawable.c,
R.drawable.h, R.drawable.j, R.drawable.d, R.drawable.f,
R.drawable.e, R.drawable.i, R.drawable.b };
// Spinner data
String[] VIEWALL_ITEMS = { "View All", "Glaze ", "Ceramic", "Plaster" };
String[] SORT_ITEMS = { "Sort By", "name", "Date" };
// Cursor to get records from table
Cursor initial_cursor;
RMLocalGalleryAdapter rmLocalGalleryAdapter;
// Data to be stored in database table
// Image ID's
int[] IMAGE_ID = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// Image Price
int[] IMAGE_PRICE = { 32, 76, 25, 30, 50, 22, 33, 55, 65, 43 };
String[] IMAGE_NAME = {"a", "g","c", "h", "j", "d", "f", "e", "i","b"};
// Model Types
String[] MODEL_TYPE = { "Glaze", "Ceramic", "Ceramic", "Ceramic", "Glaze",
"Glaze", "Plaster", "Plaster", "Plaster", "Plaster" };
String date;
// Declaring views
public Spinner viewAll_spinner, sort_spinner;
GridView gridView;
//boolean fromHomeActivity, fromLocalGallery;
public CommunityGalleryFragment() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// inflating communitygallery_fragment layout from layout folder
this.context = container.getContext();
View view = inflater.inflate(R.layout.communitygallery_fragment, container, false);
viewAll_spinner = (Spinner) view
.findViewById(R.id.communityGallery_spinner_viewAll);
sort_spinner = (Spinner) view.findViewById(R.id.communityGallery_spinner_sort);
rmLocalGalleryAdapter = new RMLocalGalleryAdapter(getActivity());
rmLocalGalleryAdapter.openDB();
initial_cursor = rmLocalGalleryAdapter.getAllImagesByDate();
// Setup UI
gridView = (GridView) view.findViewById(R.id.communityGallery_gridView);
// inserting data into sqlite database only if there is no data inserted previously
if (initial_cursor.getCount() == 0) {
// inserting data in multiple records---- it will be inserted as
// many as images are available in IMAGES
for (int i = 0; i < IMAGES.length; i++) {
byte[] image = convertToByteArray(IMAGES[i]);
// /calling insertValues method of Adapter class and passing all
// paramenters
rmLocalGalleryAdapter.insertValues(image, IMAGE_ID[i], IMAGE_PRICE[i],
IMAGE_NAME[i], MODEL_TYPE[i]);
}// for
}// if
// closing cursor to avoid memory leaks
initial_cursor.close();
return view;
}// onCreateView
private byte[] convertToByteArray(int image) {
Resources resources = getResources();
Drawable drawable = resources.getDrawable(image);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress( Bitmap.CompressFormat.PNG, 100, stream);
byte[] bitmapData = stream.toByteArray();
return bitmapData;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
// creating adapter for " View All" Spinner
ArrayAdapter<String> viewAll_Adapter = new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_spinner_dropdown_item,
VIEWALL_ITEMS);
// Creating adapter for " Sort By "Spinner
ArrayAdapter<String> sortBy_Adapter = new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_spinner_dropdown_item, SORT_ITEMS);
viewAll_spinner.setAdapter(viewAll_Adapter);
sort_spinner.setAdapter(sortBy_Adapter);
// setting ImageAdapter to the gridview
//View spinner listener to handle selection in spinner
viewAll_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
gridView.setAdapter(new ImageAdapter(context, IMAGES, IMAGE_ID,
IMAGE_PRICE, IMAGE_NAME, MODEL_TYPE ));
}//view spinner
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}//view spinner
});
sort_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
gridView.setAdapter(new ImageAdapter(context, IMAGES, IMAGE_ID,
IMAGE_PRICE, IMAGE_NAME, MODEL_TYPE ));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}// onActivityCreated
}
公共类CommunityGalleryFragment扩展了片段{
字节[]图像=空;
位图bitmapImage=null;
语境;
//要在“库视图”中充气的图像
//要存储在数据库表中的图像
int[]IMAGES={R.drawable.a,R.drawable.g,R.drawable.c,
R.drawable.h,R.drawable.j,R.drawable.d,R.drawable.f,
R.drawable.e,R.drawable.i,R.drawable.b};
//微调器数据
字符串[]VIEWALL_ITEMS={“查看全部”、“釉料”、“陶瓷”、“石膏”};
String[]SORT_ITEMS={“排序依据”、“名称”、“日期”};
//从表中获取记录的游标
光标-初始光标;
RMLocalGalleryAdapter RMLocalGalleryAdapter;
//要存储在数据库表中的数据
//图像ID的
int[]IMAGE_ID={1,2,3,4,5,6,7,8,9,10};
//图像价格
int[]IMAGE_PRICE={32,76,25,30,50,22,33,55,65,43};
字符串[]IMAGE_NAME={“a”、“g”、“c”、“h”、“j”、“d”、“f”、“e”、“i”、“b”};
//模型类型
字符串[]模型类型={“釉料”、“陶瓷”、“陶瓷”、“陶瓷”、“釉料”,
“釉”、“石膏”、“石膏”、“石膏”、“石膏”};
字符串日期;
//声明视图
公共微调器查看所有微调器、排序微调器;
GridView;
//boolean fromHomeActivity,fromLocalGallery;
公共社区GalleryFragment(){}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//正在从布局文件夹中展开communitygallery\u片段布局
this.context=container.getContext();
视图=充气机。充气(R.layout.communitygallery_碎片,容器,假);
viewAll_微调器=(微调器)视图
.findViewById(R.id.communityGallery\u spinner\u viewAll);
sort\u spinner=(spinner)view.findViewById(R.id.communityGallery\u spinner\u sort);
rmLocalGalleryAdapter=新的rmLocalGalleryAdapter(getActivity());
rmLocalGalleryAdapter.openDB();
初始光标=rmLocalGalleryAdapter.getAllImagesByDate();
//设置界面
gridView=(gridView)view.findViewById(R.id.communityGallery\u gridView);
//仅当以前没有插入数据时才将数据插入sqlite数据库
if(初始值\u cursor.getCount()==0){
//在多个记录中插入数据——它将作为
//图像中有许多图像
对于(int i=0;i
/*这是第41行*/int view\u spinner\u id=communityGalleryFragment.viewAll\u spinner.getSelectedItemPosition()
因此,communityGalleryFragment.viewAll\u微调器
为空。你想用它太早了
如果它是片段中的一个spiner(顾名思义),那么您必须等待片段本身在片段生命周期内进行初始化。实际上,最早是onCreateView()
此外,像这样引用另一个类内部构件也不是很好