0

I have problem with opening fragment from recyclerview item. When I click button inside item I get the message with error: onEditClick(com.example.taskapprealm.edit.EditFragment)' on a null object reference. Null is inside the Adapter.

Method inside MainActivity:

 @Override
public void onEditClick(EditFragment editFragment) {
    Fragment fragment = new EditFragment();

    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(R.id.recycler_view, fragment);
    transaction.addToBackStack(null);
    transaction.commit();

}

and onBindViewHolder in Adapter:

 @Override
public void onBindViewHolder(@NonNull final TaskViewHolder holder, @SuppressLint("RecyclerView") final int position) {
   Task task = tasks.get(position);
   holder.textItem.setText(task.getText());
   holder.dateItem.setText(task.getDate());
   holder.timeItem.setText(task.getTime());
   holder.deleteButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           int position = holder.getAdapterPosition();
           Log.d(TAG, "DELETE_CLICK " + holder.getAdapterPosition());
           callback.onDeleteClick(position);
           notifyItemRemoved(holder.getAdapterPosition());
       }

   });


   holder.editButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           Toast.makeText(v.getContext(), "TEST " + holder.getAdapterPosition(), Toast.LENGTH_LONG).show();

           mainActivity.onEditClick(editFragment);
       }
   });

}

Interface:

 void onEditClick(EditFragment editFragment);

Logs:

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.taskapprealm.debug, PID: 8045
              java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.taskapprealm.main.MainActivity.onEditClick(com.example.taskapprealm.edit.EditFragment)' on a null object reference
                  at com.example.taskapprealm.main.MainAdapter$2.onClick(MainAdapter.java:94)
                  at android.view.View.performClick(View.java:5198)
                  at android.view.View$PerformClick.run(View.java:21147)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:5417)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
user9897182
  • 255
  • 5
  • 18

1 Answers1

0

It seems like you are referencing RecyclerView instead of your Fragment container in:

transaction.replace(R.id.recycler_view, fragment);

Probably, recycler_view should be replaced with your Fragment container. Also, check if EditFragment view is correct and not replaced by any mistakes or typo in onCreateView() method.

Also, as mentioned, mainActivity looks null.

Read: How to get a context in a recycler view adapter

ʍѳђઽ૯ท
  • 16,646
  • 7
  • 53
  • 108