[英]I can't open fragment in Recyclerview item
I have problem with opening fragment from recyclerview item. 我从recyclerview项目打开片段时遇到问题。 When I click button inside item I get the message with error: onEditClick(com.example.taskapprealm.edit.EditFragment)' on a null object reference.
当我单击项目内的按钮时,我收到错误消息:在空对象引用上出现onEditClick(com.example.taskapprealm.edit.EditFragment)'。 Null is inside the Adapter.
Null在适配器内部。
Method inside MainActivity: 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: 和Adapter中的onBindViewHolder:
@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)
It seems like you are referencing RecyclerView
instead of your Fragment
container in: 似乎您在引用
RecyclerView
而不是Fragment
容器:
transaction.replace(R.id.recycler_view, fragment);
Probably, recycler_view
should be replaced with your Fragment
container. 可能,应该用
Fragment
容器替换recycler_view
。 Also, check if EditFragment
view is correct and not replaced by any mistakes or typo in onCreateView()
method. 另外,检查
EditFragment
视图是否正确,并且没有被onCreateView()
方法中的任何错误或错字替换。
Also, as mentioned, mainActivity
looks null. 另外,如前所述,
mainActivity
看起来为null。
Read: How to get a context in a recycler view adapter 阅读: 如何在回收者视图适配器中获取上下文
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.