这是我关于stackoverflow的第一篇文章,所以请原谅我可能遇到的任何与规范有关的缺点。 我试图在应用程序上有一个选项卡式视图,并让每个选项卡视图(只是一个普通的片段)成为gridview。我想我可以把gridview的初始化代码放在onCreateView中,但是我已经解决了这个问题几个小时了,而gridview在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;
}
正如我所说。这个片段是一个普通的片段,它被管理着#34;通过FragmentPagerAdapter。但是,我还有一个BaseAdapter的扩展,用于实际标签内的内容。
提前谢谢!
答案 0 :(得分:0)
你无法像这样夸大视图。膨胀呼叫需要一个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()));
}