0

LayoutInflater でグリッドビューを作成しようとしていますが、アプリをテストすると、常にクラッシュします。ここに私のコードがあります:

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

この行にブレークポイントを設定しGridView gridView = (GridView) root.findViewById(R.id.grid_view);、アプリのデバッグを開始してください (Eclipse では、アプリケーションの起動に通常使用するボタンの左側にあるボタンです)。ブレークポイントに到達したら、1 ステップ オーバーして、gridView が null かどうかを確認してください。私にとって、これはあなたのエラーの最も合理的な原因のように見えます。ただし、詳細なエラー メッセージがないと判断しにくいため、投稿を更新してください。

于 2013-07-19T09:28:42.417 に答える
0

OUTOFMEMORY 例外が発生する場合は、通常、大きなサイズの画像を使用しているためです。あなたはそれをサンプリングする必要があります。フラグメントではgetactivity()、コンテキストに使用する必要があります。

于 2013-07-19T10:08:09.797 に答える