Android 无法解析方法';GridView项中的getApplicationContext()从片段单击

Android 无法解析方法';GridView项中的getApplicationContext()从片段单击,android,android-layout,gridview,fragment,android-tablayout,Android,Android Layout,Gridview,Fragment,Android Tablayout,我已经创建了android应用程序,比如gallery,它有一些使用fragment选项卡的图像 功能运行正常,但当我在代码中添加setOnItemClickListener时,会显示错误 错误:无法解析方法“getApplicationContext() 您还可以检查错误的屏幕截图: 请检查我的代码并指导我如何解决此问题 public class CallFragment extends Fragment { @Override public View onCreat

我已经创建了android应用程序,比如gallery,它有一些使用fragment选项卡的图像

功能运行正常,但当我在代码中添加setOnItemClickListener时,会显示错误

错误:无法解析方法“getApplicationContext()

您还可以检查错误的屏幕截图:

请检查我的代码并指导我如何解决此问题

    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;
    }
}
public类CallFragment扩展了片段{
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
设置选项菜单(真);
视图=充气机。充气(R.layout.fragment\u调用,容器,false);
GridView GridView=(GridView)view.findviewbyd(R.id.GridView);
gridView.setAdapter(新的ImageAdapter(view.getContext());//使用视图而不是getActivity()获取上下文。
//正在侦听GridView项单击
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
//选择GridView项时启动ImageViewPager.java
Intent i=新Intent(getApplicationContext(),ImageViewPager.class);
//显示项目位置的简单toast消息
//Toast.makeText(CallFragment.this,“+位置,Toast.LENGTH_SHORT.show();
//使用intent将单击位置发送到ImageViewPager.java
i、 putExtra(“id”,位置);
//启动ImageViewPager
星触觉(i);
}
});
}
//创建视图上的公共视图(布局、充气机、视图组容器、,
//Bundle savedInstanceState){
//为该碎片膨胀布局
//设置选项菜单(真);
//返回充气机。充气(R.layout.fragment_调用,容器,错误);
//  }
@凌驾
创建选项菜单(菜单菜单,菜单充气机){
充气机。充气(右菜单。菜单呼叫,菜单);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
if(item.getItemId()==R.id.action\u调用){
Toast.makeText(getActivity(),“单击”+item.getTitle(),Toast.LENGTH\u SHORT)
.show();
}
返回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
启动活动
使用
getActivity()

Intent i = new Intent(getActivity(), ImageViewPager.class);

这是因为无论是
AdapterView.OnItemClickListener
还是
Fragment
都没有这样的方法我尝试了你的代码意图i=newintent(getActivity(),ImageViewPager.class);但是,当我测试我的应用程序并单击它时,我的应用程序会不断停止并说close app
getActivity()
可以为null
getActivity()
为null,直到发生
onAttach()
事件。在这之后,它不是null,并且肯定不是在侦听器中,它在
onAttach()之后被触发
对不起,我不明白:在您的
调用片段中添加以下代码片段
我尝试了您的代码,但当我测试我的应用程序并单击它时,我的应用程序会一直停止并说close appE/InputEventReceiver:Exception Dispatting input event。E/MessageQueue JNI:MessageQueue回调中的异常:HandlerReceiveCallback E/MessageQueue JNI:android.content.ActivityNotFoundException:找不到显式活动类{com.codingdemos.tablayout/com.codingdemos.tablayout.ImageViewPager};您是否在AndroidManifest.xml中声明了此活动?ImageViewPager是否为活动?确保您已将其添加到清单中