无法解析 GridView 项目中的方法 'getApplicationContext() 从 Fragment 单击
Cannot resolve method 'getApplicationContext() in GridView item click from Fragment
我创建了 android 类似图库的应用程序,其中包含一些使用片段选项卡的图片
功能正常,但当我在代码中添加 setOnItemClickListener 时显示错误
错误:无法解析方法 'getApplicationContext()
您也可以查看错误截图:http://prntscr.com/kc6zay
请检查我的代码并指导我如何解决这个问题。
public class CallFragment extends Fragment {
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
View view = inflater.inflate(R.layout.fragment_call,container,false);
GridView gridView = (GridView) view.findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(view.getContext())); // uses the view to get the context instead of getActivity().
// Listening to GridView item click
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// Launch ImageViewPager.java on selecting GridView Item
Intent i = new Intent(getApplicationContext(), ImageViewPager.class);
// Show a simple toast message for the item position
//Toast.makeText(CallFragment.this, "" + position, Toast.LENGTH_SHORT).show();
// Send the click position to ImageViewPager.java using intent
i.putExtra("id", position);
// Start ImageViewPager
startActivity(i);
}
});
}
// public View onCreateView(LayoutInflater inflater, ViewGroup container,
// Bundle savedInstanceState) {
// Inflate the layout for this fragment
// setHasOptionsMenu(true);
// return inflater.inflate(R.layout.fragment_call, container, false);
// }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_calls, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_call) {
Toast.makeText(getActivity(), "Clicked on " + item.getTitle(), Toast.LENGTH_SHORT)
.show();
}
return true;
}
}
试试这个:
在CallFragment
中添加以下代码
private Context context;
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}
在你的onItemClick
Intent i = new Intent(context, ImageViewPager.class);
您不会以 getApplicationContext
开始 activity。
使用 getActivity()
:
Intent i = new Intent(getActivity(), ImageViewPager.class);
我创建了 android 类似图库的应用程序,其中包含一些使用片段选项卡的图片
功能正常,但当我在代码中添加 setOnItemClickListener 时显示错误
错误:无法解析方法 'getApplicationContext()
您也可以查看错误截图:http://prntscr.com/kc6zay
请检查我的代码并指导我如何解决这个问题。
public class CallFragment extends Fragment {
@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setHasOptionsMenu(true);
View view = inflater.inflate(R.layout.fragment_call,container,false);
GridView gridView = (GridView) view.findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(view.getContext())); // uses the view to get the context instead of getActivity().
// Listening to GridView item click
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// Launch ImageViewPager.java on selecting GridView Item
Intent i = new Intent(getApplicationContext(), ImageViewPager.class);
// Show a simple toast message for the item position
//Toast.makeText(CallFragment.this, "" + position, Toast.LENGTH_SHORT).show();
// Send the click position to ImageViewPager.java using intent
i.putExtra("id", position);
// Start ImageViewPager
startActivity(i);
}
});
}
// public View onCreateView(LayoutInflater inflater, ViewGroup container,
// Bundle savedInstanceState) {
// Inflate the layout for this fragment
// setHasOptionsMenu(true);
// return inflater.inflate(R.layout.fragment_call, container, false);
// }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_calls, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_call) {
Toast.makeText(getActivity(), "Clicked on " + item.getTitle(), Toast.LENGTH_SHORT)
.show();
}
return true;
}
}
试试这个:
在CallFragment
中添加以下代码
private Context context;
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}
在你的onItemClick
Intent i = new Intent(context, ImageViewPager.class);
您不会以 getApplicationContext
开始 activity。
使用 getActivity()
:
Intent i = new Intent(getActivity(), ImageViewPager.class);