Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.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_Android Fragments_Android Recyclerview - Fatal编程技术网

Android 如何用RecyclerView替换片段

Android 如何用RecyclerView替换片段,android,android-fragments,android-recyclerview,Android,Android Fragments,Android Recyclerview,我有一个RecyclerView,其中有数据和一个适配器来处理所有的点击。当从RecyclerView中单击某个项目时,我想加载一个片段。现在我想要的是,当从相同的回收器视图中单击某个项目时,用片段替换回收器视图 我已经试过了,但是出了一个错误,它崩溃了 适配器 holder.cvContact.setOnClickListener(new View.OnClickListener() { @Override public void onClick

我有一个
RecyclerView
,其中有数据和一个适配器来处理所有的点击。当从
RecyclerView
中单击某个项目时,我想加载一个片段。现在我想要的是,当从相同的
回收器视图
中单击某个项目时,用片段替换
回收器视图

我已经试过了,但是出了一个错误,它崩溃了

适配器

holder.cvContact.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SingleContactFragment singleContactFragment = SingleContactFragment.newInstance(contact);
                FragmentTransaction transaction = ((Activity) context).getFragmentManager().beginTransaction();
                transaction.replace(R.id.rv_contact_list, singleContactFragment);
                transaction.commit();
            }
        });
其中,rv\u联系人列表是当前的回收视图

错误是

01-19 20:35:01.892 13088-13088/com.xzii.pkg E/AndroidRuntime: FATAL EXCEPTION: main
                                                          Process: com.xzii.pkg, PID: 13088
                                                          java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v7.widget.RecyclerView$ViewHolder.shouldIgnore()' on a null object reference
                                                              at android.support.v7.widget.RecyclerView.findMinMaxChildLayoutPositions(RecyclerView.java:3869)
                                                              at android.support.v7.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3604)
                                                              at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3408)

该错误基本上反映了分配给RecyclerView适配器的“上下文外数据”。尝试将适配器设置为null并删除它,然后添加新片段。现在只有一个Kotlin示例代码

val topicListFragment:TopicListFragment = supportFragmentManager.findFragmentById(R.id.topicListFragment) as TopicListFragment
topicListFragment.removeAdaptor()
supportFragmentManager.beginTransaction().remove(topicListFragment).commit()
val topicFragment = TopicFragment()
supportFragmentManager.beginTransaction().add(R.id.homeContent, topicFragment).commit()
logcat显示,清空适配器后,您可能不再需要删除片段

RecyclerView:未连接适配器;跳过布局


看这个:要替换一个片段,RecyclerView也应该是一个片段。因此,您的替换将是agains ta容器,而不是组件“rv_c…”而不是recyclerview。我将给出recyclerview的容器。声明了回收视图的Ie布局