java - 已定义的 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)
解决方案
确保findViewById()
仅在布局膨胀并使用setContentView()
.