0

I defined my recycler view and I'm still getting a null pointer exception when I try invoking methods on it, but it was working before

My layout is 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"/>

My java MainActivity.java(on create)

 @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);

}

FULL LOGCAT: FATAL EXCEPTION: main Process: com.example.atry, PID: 31310 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.atry/com.example.atry.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:3115) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3258) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955) at android.os.Handler.dispatchMessage(Handler.java:106) at 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) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 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.atry.MainActivity.onCreate(MainActivity.java:84) at android.app.Activity.performCreate(Activity.java:7327) at android.app.Activity.performCreate(Activity.java:7318) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1275) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3095) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3258)  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1955)  at android.os.Handler.dispatchMessage(Handler.java:106)  at 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)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 

Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
Josteve
  • 11,459
  • 1
  • 23
  • 35

3 Answers3

3

Ensure that findViewById() is called only after the layout has been inflated and set as content view using setContentView().

Chrisvin Jem
  • 3,940
  • 1
  • 8
  • 24
1

I found a solution

My main activity file was duplicated into activity_main.xml and activity_main.xml(v28). Meanwhile, the two files do not correspond. So my MainActivity.java was choosing activity_main.xml(v28) which wasn't the intended layout file

I just copied everything in activity_main.xml and I pasted it in activity_main.xml(v28)

Josteve
  • 11,459
  • 1
  • 23
  • 35
0

Hope this solves your issue

LinearLayoutManager layoutManager = new LinearLayoutManager(context);    
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(layoutManager);
MashukKhan
  • 1,946
  • 1
  • 27
  • 46
Deepak
  • 77
  • 7