Android 我能';t在Recyclerview项中打开片段
我无法打开recyclerview项中的片段。当我单击项中的按钮时,我得到一条消息,其中有一个空对象引用错误:onEditClick(com.example.taskapprealm.edit.EditFragment)”。Null位于适配器内部 活动中的方法:Android 我能';t在Recyclerview项中打开片段,android,android-recyclerview,Android,Android Recyclerview,我无法打开recyclerview项中的片段。当我单击项中的按钮时,我得到一条消息,其中有一个空对象引用错误:onEditClick(com.example.taskapprealm.edit.EditFragment)”。Null位于适配器内部 活动中的方法: @Override public void onEditClick(EditFragment editFragment) { Fragment fragment = new EditFragment(); Fragm
@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();
}
和适配器中的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);
}
});
}
接口:
void onEditClick(EditFragment editFragment);
日志:
您似乎在引用
RecyclerView
而不是您的Fragment
容器:
transaction.replace(R.id.recycler_view, fragment);
可能,
recycler\u视图
应该替换为您的片段
容器。另外,检查EditFragment
视图是否正确,并且没有被onCreateView()方法中的任何错误或键入替换
另外,如前所述,mainActivity
看起来是空的
阅读:您可以发布您的崩溃日志吗?可以。我刚刚粘贴了。您的main活动
在适配器中为空
我知道。如何调用MainActivity?好的,我刚刚在MainActivity的方法中更改了main_活动上的recyclerview_项,并且在适配器中也更改了此代码:MainActivity.onEditClick(editFragment);在这个页面上:callback.onEditClick(位置);谢谢你的帮助!是的。你是对的。这是我第一次使用fragment和recyclerview,但现在我没有。
transaction.replace(R.id.recycler_view, fragment);