Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ImageAdapter上的java.lang.NullPointerException。<;初始化>;(ImageAdapter.java:41)_Java_Android_Android Fragments_Baseadapter - Fatal编程技术网

ImageAdapter上的java.lang.NullPointerException。<;初始化>;(ImageAdapter.java:41)

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

初始化ImageAdapter对象时出现nullpointer异常。我已经定义了IMageAdapter参数化构造函数并正确调用了它(希望如此)。我不知道我哪里做错了

我已经创建了单独的ImageApdater java类,并且没有对它进行子类化,通过gridview,我为它创建了这个imageadapter,它位于一个片段上,这个片段是Tab

这是我的ImageAdapter类

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()

此外,像这样引用另一个类内部构件也不是很好