Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从RecyclerView适配器打开片段?_Android_Fragment_Adapter - Fatal编程技术网

Android 如何从RecyclerView适配器打开片段?

Android 如何从RecyclerView适配器打开片段?,android,fragment,adapter,Android,Fragment,Adapter,我想将数据从适配器传递到我的片段, 所以基本上,当我尝试点击一个项目时,片段应该打开, 但是,我的应用程序什么也没做。 那么我该如何解决这个问题呢 适配器 我已经在发布前更改了我的活动,因此它更适合更改OnRecycleViewMonitorClickListener 主要活动 我输入了一些布局,可能布局上有一些不好的结构 主要活动 我已经尝试了下面评论中的解决方案,但我的片段仍然没有出现。当我尝试单击时,我的logCat没有出现任何错误 在代码中做两个小更改- 适配器 就这样。希望这会有帮助

我想将数据从适配器传递到我的片段, 所以基本上,当我尝试点击一个项目时,片段应该打开, 但是,我的应用程序什么也没做。 那么我该如何解决这个问题呢

适配器

我已经在发布前更改了我的活动,因此它更适合更改OnRecycleViewMonitorClickListener

主要活动

我输入了一些布局,可能布局上有一些不好的结构

主要活动


我已经尝试了下面评论中的解决方案,但我的片段仍然没有出现。当我尝试单击时,我的logCat没有出现任何错误

在代码中做两个小更改-

适配器


就这样。希望这会有帮助

请尝试下面的代码,从适配器获取调用片段。在这段代码中,我使用了recylerview适配器的调用片段

代码

})

请检查您的片段支持android.support.v7.app.AppActivity

试试这个:

((AppCompatActivity)activity).getSupportFragmentManager()
和支持:support.v4.app.FragmentManager 试试这个:

FragmentManager manager = ((Activity)context).getFragmentManager();


此代码适用于我。

您的接口/侦听器未初始化,为空

您必须从初始化适配器的活动中实现click方法,并为侦听器listenerThis设置一个值

在适配器中为侦听器创建setter:

  public void setOnRecyclerViewItemClickListener(OnRecyclerViewItemClickListener listener){
        listenerthis=listener;
    }
在您的活动中实现侦听器:

 adapter.setOnRecyclerViewItemClickListener(new OnRecyclerViewItemClickListener(int parameter){

@override OnClick(int Parameter){
//do whatever you want with that parameter.

})

你会得到一个nullPointerException,对吗?你还没有初始化你的监听器我已经更改了它并初始化了监听器,但是,仍然没有来自片段的消息,我的片段仍然没有显示出来它仍然不工作,我已经在适配器中实现了它并将其放在主活动中,但是仍然没有打开我的片段你尝试过调试吗?您是否尝试过将片段事务代码放在Activity.onCreate中来检查它是否在没有单击事件的情况下工作?该片段没有打开,并且我没有从log cat中得到错误,为什么?
private void initRecycleView() {
    CatAdapter catAdapter = new CatAdapter(catArrayImageUrl, catArray, this, this);
    recyclerView.setAdapter(catAdapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
myholder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    FragmentManager manager=((AppCompatActivity)context).getSupportFragmentManager();
    FragmentTransaction Ft=manager.beginTransaction();
    Ft.replace(R.id.container_fl,new ProfileFragment());

    Ft.commit();
}
((AppCompatActivity)activity).getSupportFragmentManager()
FragmentManager manager = ((Activity)context).getFragmentManager();
((AppCompatActivity)activity).getSupportFragmentManager()
  public void setOnRecyclerViewItemClickListener(OnRecyclerViewItemClickListener listener){
        listenerthis=listener;
    }
 adapter.setOnRecyclerViewItemClickListener(new OnRecyclerViewItemClickListener(int parameter){

@override OnClick(int Parameter){
//do whatever you want with that parameter.

})