0

これは、stackoverflow に関する私の最初の投稿です。そのため、私が基準に関して抱えている可能性のある欠点をお許しください。アプリケーションにタブ付きのビューを表示しようとしており、各タブ付きのビュー (通常のフラグメント) をグリッドビューにしようとしています。グリッドビューの初期化コードをonCreateViewに入れるだけでよいと思っていましたが、この問題に数時間悩まされており、グリッドビューはfindviewbyid呼び出しでnullを返しています。関連するコードは次のとおりです(この質問を圧倒しないようにしているため、すべてのコードは投稿しません

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    //            View rootView = inflater.inflate(
    //                    R.layout.fragment_main_ingredient_dummy, container, false);

    GridView gridview = (GridView) inflater.inflate(R.id.gridview, container);
    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(getActivity(), "" + position, Toast.LENGTH_SHORT).show();
        }
    });

    gridview.setAdapter(new ImageAdapter(getActivity()));  

    return gridview; 
}

私が言ったように。フラグメントは通常のフラグメントであり、FragmentPagerAdapter によって「管理」されています。ただし、実際のタブ内のコンテンツ用に BaseAdapter の拡張機能もあります。

前もって感謝します!

4

1 に答える 1

0

そのようなビューを膨らませることはできません。inflate 呼び出しには R.layout が必要です。参照、R.id ではありません。参照。

ビューは onCreateView でのみ作成する必要があります。次に、onViewCreated で他の作業を行います。

private GridView mGridView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {;

mGridView = (GridView) inflater.inflate(R.layout.frag_grid, container);


return mGridView; 
}

@Override
public void onViewCreated(){
 mGridView.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
        Toast.makeText(getActivity(), "" + position, Toast.LENGTH_SHORT).show();
    }
});

mGridView.setAdapter(new ImageAdapter(getActivity()));  
}
于 2013-11-06T23:58:01.913 に答える