首页 > 解决方案 > 已定义的 RecyclerView 的空指针异常

问题描述

我定义了我的回收器视图,当我尝试调用它的方法时,我仍然收到一个空指针异常,但它之前工作过

我的布局是activity_main.xml

    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/recyclerView"
        android:layout_marginTop="8dp"
        android:visibility="gone"/>

我的 java MainActivity.java(创建时)

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    recyclerView = findViewById(R.id.recyclerView);

    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(linearLayoutManager);
    recyclerView.setHasFixedSize(true);

}

完整的日志:致命异常:主进程:com.example.atry,PID:31310 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.atry/com.example.atry.MainActivity}:java.lang.NullPointerException:尝试在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3115 ) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3258) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)在 android.app.servertransaction.TransactionExecutor。在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.ActivityThread$H.handleMessage(ActivityThread.java:1955) 处执行(TransactionExecutor.java:68) 在 android.os.Looper.loop(Looper .java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7058) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit .java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 原因:java.lang.NullPointerException:尝试调用虚拟方法'void android.support.v7.widget.RecyclerView。 setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' 在 com.example.atry.MainActivity.onCreate(MainActivity.java:84) 在 android.app 的空对象引用上。Activity.performCreate(Activity.java:7327) 在 android.app.Activity.performCreate(Activity.java:7318) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1275) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread .java:3095) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3258) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor. java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) 在 android.os.Handler.dispatchMessage(Handler.java :106) 在 android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7058) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit. java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 

标签: javaandroidandroid-layoutandroid-recyclerviewnullpointerexception

解决方案


确保findViewById()仅在布局膨胀并使用setContentView().


推荐阅读