错误与回收视图布局管理器
第二片段我有与我设置的在其三个片段一个片段容器mainActivity。 在每一个我有一个回收视图,我移动到下一个片段上的项目点击。 与recyclerView第一片段被设置如下错误与回收视图布局管理器
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_courses, container, false);
mRootRef = FirebaseDatabase.getInstance().getReference();
mCoursesList = view.findViewById(R.id.courses_rv);
linearLayoutManager = new LinearLayoutManager(getContext());
mCoursesList.setLayoutManager(linearLayoutManager);
mCoursesList.setHasFixedSize(true);
updateView();
return view;
}
进入其被作为
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_subjects, container, false);
mSubjectsList = view.findViewById(R.id.subjects_rv);
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
mSubjectsList.setLayoutManager(layoutManager);
mSubjectsList.setHasFixedSize(true);
Bundle bundle = this.getArguments();
if (bundle != null) {
courseName = bundle.getString("CourseName");
subjectName = bundle.getString("SubjectName");
}
// Inflate the layout for this fragment
return view;
}
显然它们是相同的,但与该错误
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
所做的第二个片段,当错误发生
XML文件 Main2Activity:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.crash.mathtest.Views.Main2Activity">
<LinearLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
></LinearLayout>
</LinearLayout>
CoureseFragment:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.crash.mathtest.Views.CoursesFragment">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/courses_rv"
/>
</FrameLayout>
受试者片段是相同的课程片段
再次,这仅出现在第二片段(onCreateView) 错误指向setLayoutManager(的LinearLayout)
我不能在同一活动中制作新布局吗? 是不是新的覆盖最后?
UPDATE
做这个东西,在 从onCreateView
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
mSubjectsList.setLayoutManager(layoutManager);
mSubjectsList.setHasFixedSize(true);
Bundle bundle = this.getArguments();
if (bundle != null) {
courseName = bundle.getString("CourseName");
subjectName = bundle.getString("SubjectName");
}
onActivityCreated你并不需要声明两次setLayoutManager()
方法。你正在做的:
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
mSubjectsList.setLayoutManager(layoutManager);
mSubjectsList.setLayoutManager(mSubjectsList.getLayoutManager());
取而代之的是,只是声明:
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
mSubjectsList.setLayoutManager(layoutManager);
试图将recyclerView
移动数据从onCreateView
到onViewCreated
。
内onCreateView()
方法:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.your_fragment, container, false);
}
现在添加您的recyclerView
内容onViewCreated()
方法:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
RecyclerView recyclerView = (RecyclerView) getActivity().findViewById(R.id.recyclerViewId);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
mSubjectsList.setLayoutManager(layoutManager);
}
对不起,我忘了去掉这一,它是没有成功的尝试,但问题依然存在。编辑 –
如果可能,请发布onCreateView方法和xml。 –
已修改:XML和onCreateView已添加 –
没有成功,仍然崩溃的同样的错误 –
请解决您的main2activity XML文件 –
编辑,对不起,复制粘贴了一些错误 –