0

我正在尝试在 LayoutInflater 上创建一个 gridview,当我测试我的应用程序时,它总是崩溃。这是我的代码:

public class Level1 extends Fragment {
public static Fragment newInstance(Context context) {
Level1 f = new Level1();    
return f;
}   
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
ViewGroup root = (ViewGroup) inflater.inflate(R.layout.grid_layout, null);  
GridView gridView = (GridView) root.findViewById(R.id.grid_view);

gridView.setAdapter(new ImageAdapter(root.getContext()));
}

我认为,我的问题出在“setAdapter”中。我不能使用上下文“xxx.this”。我尝试使用“getContext”和“getApplicationContext”更改 setAdapter 上下文,但它仍然崩溃。当我删除“setAdapter”时,我的应用程序正常工作但没有 gridView。

我的 ImageAdapter 看起来像这样:

public class ImageAdapter extends BaseAdapter {
private Context mContext;

public Integer[] mThumbIds = {
        R.drawable.pic_1, R.drawable.pic_2,
        R.drawable.pic_3, R.drawable.pic_4,
        R.drawable.pic_5, R.drawable.pic_6,
        R.drawable.pic_7, R.drawable.pic_8,
        R.drawable.pic_9, R.drawable.pic_10,
        R.drawable.pic_11, R.drawable.pic_12,
        R.drawable.pic_13, R.drawable.pic_14,
        R.drawable.pic_15
};

// Constructor
public ImageAdapter(Context c){
    mContext = c;
}

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

@Override
public Object getItem(int position) {
    return mThumbIds[position];
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {         
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
    return imageView;
}

    }

请帮我..

4

2 回答 2

0

如果您遇到 OUTOFMEMORY 异常,通常是因为您使用的是大尺寸图像。您将不得不对其进行采样。在片段中,您必须使用getactivity()上下文。

于 2013-07-19T10:08:09.797 回答
0

请在此行设置断点GridView gridView = (GridView) root.findViewById(R.id.grid_view);并开始调试您的应用程序(在 Eclipse 中,它是您通常用于启动应用程序的按钮左侧的按钮)。当到达断点时,请单步执行,查看 gridView 是否为空。对我来说,这看起来是您错误的最合理来源。但是如果没有详细的错误消息很难说,所以请更新您的帖子。

于 2013-07-19T09:28:42.417 回答