Android 嘿,我正在一个片段中实现一个gridview…但是我对这些错误一无所知
嘿,我想实现链接中给出的这个网格视图 [连结][1] 但我想在一个片段中做这件事……但在这里,我被这两个错误所困扰 这是我的片段类 我已经标记了我遇到错误的行Android 嘿,我正在一个片段中实现一个gridview…但是我对这些错误一无所知,android,gridview,android-fragments,nullpointerexception,Android,Gridview,Android Fragments,Nullpointerexception,嘿,我想实现链接中给出的这个网格视图 [连结][1] 但我想在一个片段中做这件事……但在这里,我被这两个错误所困扰 这是我的片段类 我已经标记了我遇到错误的行 public class FragmentGrid extends Fragment{ GridView gridview; GridViewAdapter gridviewAdapter; ArrayList<Item> data = new ArrayList<Item>(); @Override
public class FragmentGrid extends Fragment{
GridView gridview;
GridViewAdapter gridviewAdapter;
ArrayList<Item> data = new ArrayList<Item>();
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
// Initialize the GUI Components
gridview = (GridView) getActivity().findViewById(R.id.gridView);
fillData(); // Insert The Data
// Set the Data Adapter
gridviewAdapter = new GridViewAdapter(getActivity(), R.layout.item_grid, data);
gridview.setAdapter(gridviewAdapter);
/* ----- ERRRORR ------*/
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
String message = "Clicked : " + data.get(position).getTitle();
Toast.makeText(getApplicationContext(), message , Toast.LENGTH_SHORT).show();
}
});
}
// Insert The Data
private void fillData()
{
data.add(new Item("Facebook", getResources().getDrawable(R.drawable.athletics)));
data.add(new Item("Twitter", getResources().getDrawable(R.drawable.bowls)));
data.add(new Item("Linked In", getResources().getDrawable(R.drawable.boxing)));
data.add(new Item("Google", getResources().getDrawable(R.drawable.cycling)));
data.add(new Item("Yahoo", getResources().getDrawable(R.drawable.netball)));
data.add(new Item("YouTube", getResources().getDrawable(R.drawable.swimming)));
data.add(new Item("Flickr", getResources().getDrawable(R.drawable.hockey)));
data.add(new Item("Whatsapp", getResources().getDrawable(R.drawable.judo)));
data.add(new Item("Blogger", getResources().getDrawable(R.drawable.triathlon)));
}
}
在接受了阿列克斯巴洛的所有帮助后…我能够解决我的问题。。
最后我的课看起来像这样
public class FragmentGrid extends Fragment{
GridView gridview;
GridViewAdapter gridviewAdapter;
ArrayList<Item> data = new ArrayList<Item>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
RelativeLayout fragmentLayout = (RelativeLayout) inflater.inflate(R.layout.grid_view, container, false);
return fragmentLayout;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
// Initialize the GUI Components
gridview = (GridView) getActivity().findViewById(R.id.gridView);
// gridview.setOnItemClickListener(this); /* ----- ERRRORR ------*/
fillData(); // Insert The Data
// Set the Data Adapter
gridviewAdapter = new GridViewAdapter(getActivity(), R.layout.item_grid, data);
gridview.setAdapter(gridviewAdapter);
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
String message = "Clicked : " + data.get(position).getTitle();
Toast.makeText(getActivity(), message , Toast.LENGTH_SHORT).show();
}
});
}
// Insert The Data
private void fillData()
{
data.add(new Item("Facebook", getResources().getDrawable(R.drawable.athletics)));
data.add(new Item("Twitter", getResources().getDrawable(R.drawable.bowls)));
data.add(new Item("Linked In", getResources().getDrawable(R.drawable.boxing)));
data.add(new Item("Google", getResources().getDrawable(R.drawable.cycling)));
data.add(new Item("Yahoo", getResources().getDrawable(R.drawable.netball)));
data.add(new Item("YouTube", getResources().getDrawable(R.drawable.swimming)));
data.add(new Item("Flickr", getResources().getDrawable(R.drawable.hockey)));
data.add(new Item("Whatsapp", getResources().getDrawable(R.drawable.judo)));
data.add(new Item("Blogger", getResources().getDrawable(R.drawable.triathlon)));
}
}
您的片段类未实现McClickListener。试试这个
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
}
});
所以我没有回答你的问题……把我的代码从onItemCLick放到这里……我现在得到一个错误——AdapterView类型中的setOnItemClickListenerAdapterView.OnItemClickListener方法不适用于参数new OnItemClickListener{}请用新代码更新发布的类,并在setAdapter methodimport android.widget.AdapterView.OnItemClickListener之后移动setOnItemClickListener;检查您的导入之间是否存在此问题,以防删除一个导入android.view.view.OnClickListener;嗯…neva有tht导入…所以添加了它…但现在我在Toast.makeTest方法中的getApplicationContext出现错误。。。。。。简单错误表示类型new AdapterView.OnItemClickListener{}的getApplicationContext方法未定义
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
LinearLayout fragmentLayout = (LinearLayout) inflater.inflate(R.layout.your_fragment_layout_resource, container, false);
gridView = (GridView) fragmentLayout.findViewById(R.id.yourGridView);
and here all the rest of the code...
return fragmenLayout;
}