android - 在 Fragment 上调用 RecycleView 时应用崩溃

标签 android android-recyclerview

好的,我在这里 (stackoverflow.com/questions/27416834/app-crashing-when-trying-to-use-recyclerview-on-android-5-0) 和这里 (stackoverflow. com/questions/26446162/andorid-recyclerview-layoutmanager-exception),或此处 (code.google.com/p/android/issues/detail?id=81588)。我想在那里发表评论,但不能。他们都建议一旦膨胀就设置layoutmanager。我已经完成了,但应用程序仍然崩溃并显示此错误:

java.lang.NullPointerException: Attempt to invoke virtual method void android.support.v7.widget.RecyclerView$LayoutManager.onMeasure(android.support.v7.widget.RecyclerView$Recycler, android.support.v7.widget.RecyclerView$State, int, int) on a null object reference

下面是我的代码 fragment

MyFragment.java

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView =  inflater.inflate(R.layout.my_fragment, container, false);

        mRecyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view);
        mRecyclerView.setHasFixedSize(true);

        final RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2);
        mRecyclerView.setLayoutManager(mLayoutManager);

        myDataset = // initiaized data

        mAdapter = new MyAdapter(getActivity().getApplicationContext(), myDataset);
        mRecyclerView.setAdapter(mAdapter);

        return rootView;
    }

my_fragment.xml

<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=".MyFragment">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>

最佳答案

我已经稍微重新格式化了您的代码,它应该可以帮助您进一步调试。

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.my_fragment, container, false);

        mRecyclerView = (RecyclerView)
            rootView.findViewById(R.id.my_recycler_view);

        if (mRecyclerView != null) {
            mRecyclerView.setLayoutManager(
                new GridLayoutManager(getActivity(), 2));
            mRecyclerView.setHasFixedSize(true);

            myDataset = // initiaized data
            mAdapter = new MyAdapter(
                getActivity().getApplicationContext(), myDataset);
            mRecyclerView.setAdapter(mAdapter);
        } else {
            Log.e("Error", "Unable to find recyclerView");
        }
        return rootView;
    }

关于android - 在 Fragment 上调用 RecycleView 时应用崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247504/

相关文章:

java - 如何修复 "No adapter attached; skipping layout"

android - 当列表按降序排序时,DiffUtil 正在改变我的位置

android - 带有 Recyclerview 的 ViewPager 上的 NullPointerException

java - 使用字符串的 equals() 返回 true,而两个变量则不返回 true

android - 为什么从 android :hardware:camera api 拍摄图片后图片旋转

Android:BaseAdapter 和 getLayoutInflater 在单独的类文件上

java - ScrollView wrap_content 高度内的 RecyclerView 未按预期工作

android - 如何在 recyclerview viewholder 中处理大量不同的 View 类型

android - Android 的 SAML 客户端实现?

Android Studio (Kotlin) 如何将 StringArray 转换为 MutableList