首页 > 解决方案 > 在 BlankFragment 上看不到 RecyclerView、CardView

问题描述

我是安卓新手。昨天我在 BlankFragment 上的项目中添加了 RecyclerView 和 CardView。它运行没有错误,但是当我打开它时,它给出“程序已停止”。在教程中,他们将 RecyclerView 包含到 LinearLayout 中。但是在我的 BlankFragment 中我已经有了 FragmentLayout,这就是为什么我认为我不需要它。其他人建议在 androidStudio 上查看 Logcat,之后我得到了 AndroidRuntime: FATALEXCEPTION: main

Process: com.example.ganz.afex_with_default_navigation, PID: 10058
                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ganz.afex_with_default_navigation/com.example.ganz.afex_with_default_navigation.MainActivity}: 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
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
                                                       at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
                                                       at android.os.Handler.dispatchMessage(Handler.java:105)
                                                       at android.os.Looper.loop(Looper.java:164)
                                                       at android.app.ActivityThread.main(ActivityThread.java:6944)
                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
                                                    Caused by: 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
                                                       at com.example.ganz.afex_with_default_navigation.MainActivity.onCreate(MainActivity.java:46)
                                                       at android.app.Activity.performCreate(Activity.java:7174)
                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) 
                                                       at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) 
                                                       at android.os.Handler.dispatchMessage(Handler.java:105) 
                                                       at android.os.Looper.loop(Looper.java:164) 
                                                       at android.app.ActivityThread.main(ActivityThread.java:6944) 
                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                       at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) 
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) 

在这个 Logcat 上,我链接到我的 MainActivity.java:46。第 46 行留在 OnCreate 方法中:

lstTovar = new ArrayList<>();
        lstTovar.add(new Tovar_tavsiya("Modadagi kiyimlar", "Tovar kategoriyasi", "Description", R.drawable.tile_bg_1));
        lstTovar.add(new Tovar_tavsiya("Chet eldan uskunalar", "Tovar kategoriyasi", "Description", R.drawable.tile_bg_2));
        lstTovar.add(new Tovar_tavsiya("Tekstil mahsulotlari", "Tovar kategoriyasi", "Description", R.drawable.tile_bg_3));

        RecyclerView myrv = (RecyclerView) findViewById(R.id.recyclerview_id);
        Recyclerview_Adapter myrv_Adapter = new Recyclerview_Adapter(this, lstTovar);
        myrv.setLayoutManager(new GridLayoutManager(this, 3));    ===IT IS THE 46TH ROW===
        myrv.setAdapter(myrv_Adapter);

这里fragment_blank.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="com.example.ganz.afex_with_default_navigation.BlankFragment">

    <!-- TODO: Update blank fragment layout -->
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview_id"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>

</FrameLayout>

PS:我也有他们的适配器、活动、java 文件。如果我也将它们添加在这里,我想这个问题会很混乱。如果您需要他们的零件来解决问题,我将分享它们。先感谢您!

标签: javaandroidandroid-fragmentsandroid-recyclerviewandroid-cardview

解决方案


推荐阅读