错误与回收视图布局管理器

问题描述:

第二片段我有与我设置的在其三个片段一个片段容器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"); 
} 
+0

没有成功,仍然崩溃的同样的错误 –

+0

请解决您的main2activity XML文件 –

+0

编辑,对不起,复制粘贴了一些错误 –

onActivityCreated你并不需要声明两次setLayoutManager()方法。你正在做的:

LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
mSubjectsList.setLayoutManager(layoutManager); 
mSubjectsList.setLayoutManager(mSubjectsList.getLayoutManager()); 

取而代之的是,只是声明:

LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
mSubjectsList.setLayoutManager(layoutManager); 

试图将recyclerView移动数据从onCreateViewonViewCreated

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); 
} 
+0

对不起,我忘了去掉这一,它是没有成功的尝试,但问题依然存在。编辑 –

+0

如果可能,请发布onCreateView方法和xml。 –

+0

已修改:XML和onCreateView已添加 –